protocolbuffer 在java中的使用 (windows平台)

原创 2016年05月31日 17:37:35
1、下载 protoc-2.6.1-win32.zip 

https://github.com/google/protobuf/releases?after=v3.0.0-alpha-1

压缩包内有一个protoc.exe,用来把proto的消息文件生成java实体类

2、建立一个Maven工程,添加protobuf-java的依赖。依赖的版本要和上面的protoc的版本保持一致
依赖包地址如下:
http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/2.6.1

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>2.6.1</version>
</dependency>

如果不是Maven功能,就单独下载这个jar包,然后把jar文件加入到已有的工程中去使用。

3、建立一个测试的msg.proto文件,内容如下:

option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf"; 

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;
}

4、生成 java文件:打开命令窗口(cmd),进入proto.exe目录下,执行如下命令:
protoc --java_out=../src ./msg.proto注意路径根据实际情况修改


生成在src下会生成对应的java类:



5、建立测试:


// 创建builder对象
PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
builder.setEmail("ggggggg@email.com");
builder.setId(1);
builder.setName("TestName");
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("13664262866")
.setType(PersonProbuf.Person.PhoneType.MOBILE));
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("02869387891")
.setType(PersonProbuf.Person.PhoneType.HOME));
// 通过builder转化为Person对象
Person person = builder.build();
// 将person对象转化为字节流
byte[] buf = person.toByteArray();

try {
// 通过字节流转化 为Person对象
Person person2 = PersonProbuf.Person.parseFrom(buf);
System.out.println(person2.getName() + ", " + person2.getEmail());
List<PhoneNumber> lstPhones = person2.getPhoneList();
for (PhoneNumber phoneNumber : lstPhones) {
System.out.println(phoneNumber.getNumber());
}
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}

System.out.println(buf);


执行结果:



windows上安装protobuf

protobuf的全称是Protocol Buffer,它是google 的一种数据交换的格式,可用于用于分布式应用之间的数据通信或者异构环境下的数据交换,     最近因为项目的需求,需要接触Pr...
  • xiaxiazls
  • xiaxiazls
  • 2015年11月16日 21:08
  • 9782

Protocol Buffers windows protoc-2.5.0.exe

  • 2013年03月09日 17:33
  • 2.21MB
  • 下载

windows下Java中使用Protocol Buffer总结

一、PB下载:http://code.google.com/p/protobuf/downloads/list
  • shushuidewoniu
  • shushuidewoniu
  • 2014年11月17日 19:13
  • 699

windows下Google Protocol Buffer 编译安装教程

原文出自:http://kuaile.in/archives/1214 作者:蒲公英   发布:2012-10-07 21:57   分类:编程技术 protobuf的全称是Protoco...
  • whuancai
  • whuancai
  • 2013年09月26日 23:50
  • 15206

用proto命令生成java文件

有个问题需要注意下,proroc的版本一定要和你本地使用的protobuf-java-2.3.0版本一致,否则会出现生成的java代码 报错的情况。特别是修改之前的代码的时候。 1.下载:...
  • baidu_18607183
  • baidu_18607183
  • 2016年11月24日 10:40
  • 4440

windows下使用protobuf

1.下载protobuf https://github.com/google/protobuf/releases 选择protoc-xxx-win32.zip下载 2.将解压出来的p...
  • u012364372
  • u012364372
  • 2017年04月24日 11:08
  • 5206

【Google Protobuf】windows下protobuf的环境搭建(一)

一、Protobuf介绍   Protobuf是由谷歌开源而来,在谷歌内部久经考验。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方...
  • liulongling
  • liulongling
  • 2016年07月14日 16:40
  • 3437

google protobuf学习笔记一:windows下环境配置

protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415 Windows下google protob...
  • majianfei1023
  • majianfei1023
  • 2015年04月29日 22:14
  • 33397

windows下使用protocol buffer

一、下载 在github上下载 https://github.com/google/protobuf 二、下载gtest 官方地址https://code.google.com/p...
  • u011476173
  • u011476173
  • 2014年11月07日 09:54
  • 2288

通信协议之Protocol buffer(Java篇)

之前一直习惯用json进行数据的传输,觉得很方便。来到新公司后发现同事们用的更多的的协议都不是json,而是Protocol buffer。这个东西之前没有听说过,不明白同事们为什么放弃好好的json...
  • briblue
  • briblue
  • 2016年11月16日 16:16
  • 10839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:protocolbuffer 在java中的使用 (windows平台)
举报原因:
原因补充:

(最多只允许输入30个字)