标签:
ps: Protocol Buffers简称PB
tar zxvf protobuf-2.5.0.tar.gz
,使用 cd
命令进入 protobuf-2.5.0
目录。--prefix
参数来指定目录,例如:./configure --prefix=/usr/local/Cellar/protobuf/2.5.0
make: Nothing to be done for all
错误提示,表示 PB 已经被编译好了,如需重新编译,可以先用 make clean
命令删除已经编译好的文件。/etc/profile
,在文件末尾加入:export PATH=$PATH:/usr/local/Cellar/protobuf/2.5.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Cellar/protobuf/2.5.0/lib
至此,PB已经成功安装完毕,可以使用 protoc --version
命令来验证是否安装成功,如果出现如下结果,则表示 PB 已经安装成功并且生效。
通常我们在编写好 PB 文件之后,需要使用 protoc
来将 PB 文件编译成对应的代码,在命令行里面我们可以使用如下命令来生成对应的 Java 文件:
protoc --proto_path=src --java_out=build/gen src/myfolder
在 IDE 中编写 PB 文件之后,可以在指定 package 下一键生成对应的 Java 文件,方便对 Java 文件的管理。
Google Protocol Buffers support 就是有着上诉功能的 IDEA 插件。
安装 PB 插件。进入 IDEA 设置中心,打开 Plugins
,点击 Browse repositories
,搜索 protocol buffer
安装插件,如下图所示。安装好 PB 插件之后,需要重启 IDEA。
至此,IDEA PB 插件安装完成,下面介绍如何在项目中使用 PB 插件来快速生成 Java 文件。
新建 Maven 项目,配置 PB 生成 Java 文件的目录:进入 Project Settings
,填写 Output source directory
,这里的目录就是项目的 Java source
目录。
根据 PB 描述文件,生成 Java 文件。在 PB 文件中右键,从菜单中选择 Compile ‘person.proto’
,就能生成对应的 Java 文件。
option java_package = "first.proto";
option java_outer_classname = "PersonModel";
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.5.0</version>
</dependency>
PersonModel.Person.Builder personBuilder = PersonModel.Person.newBuilder();
personBuilder.setId(1);
personBuilder.setName("***");
personBuilder.setEmail("xxx@163.com");
PersonModel.Person person1 = personBuilder.build();
// 将数据写到输出流,如网络输出流,这里就用ByteArrayOutputStream来代替
ByteArrayOutputStream output = new ByteArrayOutputStream();
person1 .writeTo(output);
byte[] byteArray = output.toByteArray();
// 接收到流并读取,如网络输入流,这里用ByteArrayInputStream来代替
ByteArrayInputStream input = new ByteArrayInputStream(byteArray);
PersonModel.Person person2= PersonModel.Person.parseFrom(input);
System.out.println("ID:" + person2.getId());
System.out.println("name:" + person2.getName());
System.out.println("email:" + person2.getEmail());
标签:
原文地址:http://www.cnblogs.com/wade-luffy/p/5663969.html