Windows下Protocol Buffer proto文件转java文件
1、首先我们来介绍一下如何编写后缀名为.proto的文件,通常我们使用proto文件来定义结构化数据,在protobuf的术语中结构化数据被称为Message,如 message person { required string name=1; required int32 age=2; optional string email=3;},同时良好的命名习惯可以让我们清晰的通过文件名了解文件的信息,文件名的命名规则如下:packageName.MessageName.proto。
2、// [START declaration]syntax = "proto2"挢旗扦渌;;//相当于命名空间p锾攒揉敫ackage TestMsg;// [START java_declaration]//java_package 就是生成我们.java文件的包名option java_package = "com.baidu.experience.entity";//java_outer_classname也就是我们把.proto编译成.java后的名字(也就是ProtoTest.java)option java_outer_classname = "ProtoTest";// [END java_declaration]/*---------------- 类及其消息结构 ----------------*/message Person{//这里的required 的修饰符表示name必须赋值(没有默认值) required string name = 1; required int32 age = 2; optional string email = 3; //同理optional 也就是可不赋值当然 如果你在后面加了[dafault = xx],例如 //optional string email = 3;[dafault = 0]默认值是0 //required和optional可以有默认值}

3、下面我们需要去官网下载windows版本的文件,选择protoc-xxx-win32.zip下载,当然很多情况下官网链接可能打不开,这时候我们可以在百度上搜索,还有其他的途径可以下载,如下图所示。

4、将protoc-xxx-win32.zip文件解压,解压后的bin目录下有protoc.exe,是用来把proto文件编译成目标语言(C++,Java,Python)的文本,是google protobuf定义的格式。

5、下面我们需要在Windows下为google protobuf配置环境变量,熟悉java的朋友都知道环境变量的配置,下面小编简单说一下步骤:右击“这台电脑”-->“属性”-->“高级系统设置”-->“环境变量”-->修改Path的值即可。注意我们添加的Path值仅到bin目录下即可。

6、接下来便是.proto文件转换为.java文件了,因为配置了环境变量,因此我们可以在任意位置打开cmd命令窗口,在cmd窗口执行以下命令:protoc -I=源地址 --java_out=目标地址源地址/xxx.proto,此处生成时会以proto里面注明的java_package为路径完整生成,所以目标地址不必包含java_package及之后的路径, 例如:protoc -I=. --java_out=. ./ProtoTest.proto。

7、注意:-I选项主要用于指定待编译的.proto消息定义文件所在的目录,即可能出现的包含文件的路径,该选项可以被同时指定多个。此处指定的路径不能为空,如果是当前目录直接使用.即可,如果是子目录则使用子目录的相对路径。接下来我们看一下编译后的文件格式,当然是不可读的,但是对于使用却没有任何问题,具体的使用大家可以自行学习。
