protobuf在window上的使用

1、到https://github.com/google/protobuf/releases下载protoc-3.5.1-win32.zip
你们也可以选择其他 解压该文件,文件下有protoc.exe
2、需要maven环境,这里不做演示
添加依赖(依赖的版本要和上面的protoc的版本保持一致)
http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/3.5.1

<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.5.1</version>
</dependency>

3、建立一个测试的msg.proto文件 这个文件我放在src/main/resources
同时把protoc.exe也放在这个目录下

syntax = "proto2";
package protobuf;

option java_package = "com.binglo.AllNetty.protobuf";
option java_outer_classname = "PersonProbuf"; 

 message  RequestMsg {
    required string cmd = 1;
    required bytes requestParam = 2;
}

第一行是指定版本号,如果没有,编译器会报如下错误:
[libprotobuf WARNING google/protobuf/compiler/parser.cc:547] No syntax specified for the proto file. Please use ‘syntax = “proto2”;’ or ‘syntax = “proto3”;’ to specify a syntax version. (Defaulted to proto2 syntax.
第二行是包名

第三行是生成java文件后的包名

第四行是生成的类名

message的定义,他是用来存放数据域的,数据域有自己的类型。
一个域由以下部分组成:修饰词 类型 域名 = 标记值

name,是string类型的,前面还有 required修饰符,表示这个域必须有,后面还有 = 1,这个符号,这是用来在二进制编码里面唯一确认当前的域的,如果你某些域用的很频繁,应该首先分配1-15,这也是作为优化的一种方式。

emailoptional,也就是可选的,这个域可有可无,如果没有设置的话,系统会自动填充一个合理地值。

通常情况下,一个人不可能只拥有一个号码,所以phone应该是一个集合,这个集合可以是变化的,可为空,你可以想象为一个动态变化的数组,所以它的修饰词是repeated

4、在命令模式下进入到protoc.exe的位置,执行下面命令

protoc –java_out=../java ./msg.proto

../java 的意思是 把生成的文件放在哪个位置
./msg.proto 的意思是 执行当前目录的msg.proto
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值