一、protocol buffer 下载
protocol buffer下载链接
在该页面中请选择下图方框中的链接,这个是win平台下的预编译版本,不然还要自己下载源码编译。
二、编译proto文件时注意事项
- 命令格式 protoc –java_out=./ *.proto,可以先执行命令”protoc -h”查看命令语法。
- 编译的Java源代码输出路径写对,尤其是win平台以
\
为分隔符。 - 编译时报提示
[libprotobuf WARNING google/protobuf/compiler/parser.cc:546] No syntax specified for the proto file: address.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)
只需要在proto文件头添加注释syntax = “proto3”;或者syntax = “proto2”;即可
三、使用Java源码过程中报错
- 解析时报错:Protocol message tag had invalid wire type 异常
原因:二进制的内容不能直接在http协议传输,传输的内容可能有压缩或者base64编码,需要对接收到的二进制数据做解压缩或者base64解码。 - 解析式报错:Protocol message contained an invalid tag (zero)
原因:待解析的二进制数据中不全是pb二进制数据,可能还有其它内容,例如二进制数据头部约定的错误信息长度、错误信息字符串内容等。