1. 程式人生 > >Google PB協議學習記錄--一個簡單的例子--如何編譯.proto檔案為.java檔案

Google PB協議學習記錄--一個簡單的例子--如何編譯.proto檔案為.java檔案

步驟一, 書寫 .proto 檔案,這裡直接上google官方例項,並存儲為addressbook.proto

package tutorial;

option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

message AddressBook {
  repeated Person person = 1;
}


步驟2、下載.proto檔案編譯器


通過命令列將.proto的檔案生成為.java的檔案 官網上是這樣寫的 protoc    -I=$SRC_DIR      --java_out=$DST_DIR        $SRC_DIR/addressbook.proto

下面直接來看具體操作

1、由於protoc.exe在bin資料夾下,所以先進入該目錄

2、執行 protoc.exe   --java_out=./     addressbook.proto   命令

3、在當前目錄下就會生成目標檔案



下面來解釋下命令列的意思

protoc      --proto_path=IMPORT_PATH       
 --cpp_out=DST_DIR                            file.proto

                                                                          --java_out=DST_DIR 

                                                                          --python_out=DST_DIR          


1.引用資料夾(使用--proto_path  或者 -I),如果proto檔案中需要引用其他檔案,在這指定(需要絕對路徑,也就是需要完整的路徑

)

IMPORT_PATH 引用的路徑:當pb檔案裡面有import關鍵字時,會在引用路徑裡面尋找依賴的檔案。如果沒有給出,會再當前路徑下進行尋找。也可以縮寫成 -I


2.檔案輸出資料夾  (--cpp_out 或者 --java_out 或者 --python_out) 根據需要選擇需要生成的格式,並且指定資料夾

3.需要編譯的pb檔案


相關推薦

Google PB協議學習記錄--一個簡單例子--如何編譯.proto檔案.java檔案

步驟一, 書寫 .proto 檔案,這裡直接上google官方例項,並存儲為addressbook.proto package tutorial; option java_package = "com.example.tutorial"; option java_o

LaTex學習記錄——一個簡單的封面

LaTex TeXstudio 操作系統:Ubuntu 14.04LTS;工具:TeXstudio;此外,我還安裝了完全的texlive(sudo apt-get install texlive-full,比較大,大家可以酌情安裝部分)。??在實際工作中,在文章中使用圖片是比較普遍的,這裏介紹一個簡單

Spring學習筆記(一):眼見為實,先上一個簡單例子

概述 所謂眼見為實,Spring雖然是一個輕量級的框架,但涉及眾多的概念,理解起來並不容易,因此,先參考資料寫一個簡單的Demo,從中洞見Spring的大體工作流程,為後面深入學習做鋪墊。 本文的Demo很簡單:模擬圖書資料訪問服務,即向資料庫中新增圖書資訊,涉及IBoo

第8章 使用Spring Web Flow--學習一個簡單例子

概述: Spring 的工作流就是類似網上購物,註冊使用者-》選擇商品-》新增到購物車-》付款-》收貨-》售後,一套已經固化的流程。 學習博文地址: 看一下工程結構: 操作步驟: step1、引入spring web flow jar 當前還要普通Spring相關jar

LLVM學習日誌6——另一個簡單例子ModuleMaker,淺讀呼叫LLVM的API及函式

發現LLVM的呼叫還是看不太懂,先來學個小例子。 對了,剛發現,在llvm的examples中有各種例子的原始碼可以看,包括之前那個Kaleidoscope 這個ModuleMaker 照例讀原始碼 第一句是定義context,到現在我還不知道具體有什麼用,看文件說L

WCF學習——構建一個簡單的WCF應用(一)

frame port app 位置 協定 enc splay msdn ons 本文的WCF服務應用功能很簡單,卻涵蓋了一個完整WCF應用的基本結構。希望本文能對那些準備開始學習WCF的初學者提供一些幫助。 在這個例子中,我們將實現一個簡單的計算器和傳統的分布式通信框架一樣

用socket.io實現websocket的一個簡單例子

soc .html www sock 在線 ket log html 簡單例子 http://biyeah.iteye.com/blog/1295196 socket.io的介紹 http://www.cnblogs.com/mazg/p/5467960.html

C語言多線程的一個簡單例子

color oid blog stdlib.h null bsp 等待 creat 多線程   多線程的一個簡單例子:    #include <stdio.h> #include <stdlib.h> #include <string.h&

前端小白之每天學習記錄----js簡單的組件封裝

學習 styles this src 元素 modal info clas mov 設計模式:是解決問題的模板 關於設計模式,可以閱讀湯姆大叔的博文http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 這裏

netsh interface portproxy的一個簡單例子

get 文檔 let pre interface 簡單例子 配置文件 exe CP netsh interface portproxy的微軟幫助文檔地址: https://technet.microsoft.com/zh-cn/library/cc776297(WS.10

使用java實現快速排序的一個簡單例子

fast val rgs 快速 實現 個數 static void sta public static void main(String[] args) { // 測試排序 Random r = new Random(); int arr[] = new

20181015記錄一個簡單的TXT日誌類

nvi ati time void utf8 color nco ron info 廢話不說,直接上代碼 using System; using System.Collections.Generic; using System.IO; using System.Linq;

tomcat學習(2) 一個簡單的servlet容器

servlet容器 2.1 javax.servlet.Servlet介面     servlet程式設計需要使用到java.servlet和javax.servlet.http兩個包下的介面和類,在所有的類和介面中,java.servlet.servlet介面是最重要的,所

flask學習一個簡單案例綜合之前學到的知識

黑馬的免費視訊課關於入門flask的我看完了,最後第五章實現了一個小案例,基本涵蓋了之前學到的所有知識。跟著敲了一遍,覺得還不錯,因此把程式碼在這裡分享一下。重要地方也都做了記錄。 前端截圖如下: (竟然支援qq截圖直接複製,csdn真的是越來越優秀了,點贊!!!) from

一個簡單例子解釋工廠模式建立物件

function createObject(name,age) { var obj=new Object(); obj.name=name; obj.age=age; obj.eat=function () { console.log(

Java產生死鎖的一個簡單例子

什麼是死鎖?所謂死鎖,是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。 因此我們舉個例子來描述,如果此時有一個執行緒A,按照先鎖a再獲得鎖b的的順序獲得鎖,而在此同時又有另外一個執行緒B,按照先鎖b再鎖a的順序獲得鎖。如下圖所示: &nbs

網路協議學習記錄

一,網際網路協議 osi七層協議 tcp/ip五層協議 tcp/ip四層協議  資料傳輸過程: 傳輸層: TCP\UDP協議 TCP\UDP的區別: tcp協議:面向連線,訊息可靠,相對udp來講,傳輸速度慢,訊息是面向流的,無訊息保護邊界0 udp協議:面向無連線,訊息不可靠,傳輸速度快,訊息是面向

什麼是量子計算機?用一個簡單例子來解釋

譯者:王亮 作者:YK Sugi 原文:http://t.cn/EZAElk0 Hi,大家好! 不久前,我參觀了加拿大溫哥華的D-Wave Systems公司,這是一家制造前沿量子計算機的公司。 我在那裡學到了很多關於量子計算機的知識,所以我寫這篇文章來和大家分享我在那裡所學到的一些知識。

Go語言入門——從一個簡單例子入門

檢視文件 首先先分享一個可以在本地就能檢視文件的騷操作(linux系統) 1.開啟命令列終端,輸入godoc -http=:8000,如果想後臺執行在後面加個& 2.然後開啟瀏覽器,輸入網址:localhost:8000 就可以愉快地看文件了 go語言是個什麼東西

多型的一個簡單例子

package com; public class Animal { public int a; public void move() { System.out.println("移動")