1.创建maven项目
创建proto文件夹
详情请百度
2.创建pom.xml
写法请百度
3.创建.proto文件
写法看官方文档,或者笔记的:
Protobuf在Java项目中的使用
以上步骤或者可以:
下载fabric-sdk-java(如果只下载这一个不行,就下载上protobuf )
4.生成java实体类的命令
4.1在cmd中进入(或者
fabric-sdk-java)
到.proto文件所在得目录
输入
protoc helloworld.proto --java_out=./
./
的意思是输出到当前目录
如果上面的命令报错,显示timestamp.proto找不到,就用下面的命令
4.2或者
C:\Users\Luo_xuri\Desktop\fabric-sdk-java-master\src\main\proto\peer> // cd到某目录下
protoc // protoc
-I=. -I= // 注意-前面的空格
C:\Users\Luo_xuri\Desktop\protobuf-3.1.x\src\ // 指向protobuf的src,找到timestamp.proto
proposal_response.proto --java_out=./ // 将这个.protoc文件输出到当前目录(注意前面的空格)
或者将timestamp.proto文件copy到proto文件里面,修改.protoc文件中的import,也就是下面的5
google/protobuf/timestamp.proto: File not found.
common/common.proto: Import "google/protobuf/timestamp.proto" was not found or had errors.
common/common.proto:86:5: "google.protobuf.Timestamp" is not defined.
configtx.proto: Import "common/common.proto" was not found or had errors.
configtx.proto:53:5: "Envelope" is not defined.
configtx.proto:69:5: "ChannelHeader" is not defined.
configtx.proto:88:5: "ChannelHeader" is not defined.
这些类似的问题都是因为.proto文件中的import找不到路径,可以像以下那么修改
一开始是下面这样
import "google/protobuf/timestamp.proto";
改为:
将timestamp.proto文件copy到项目的proto文件下
然后从之前的就变成这样了:
import "timestamp.proto";
再执行4.2中的“
或者
”方法,当然其中的-I=的路径也要指到timestamp.proto所在目录
6.根据插件(protoc-gen-grpc-java.exe)生产grpc类的命令
- C:\Users\Luo_xuri\Desktop\fabric-master\protos>
protoc --plugin=protoc-gen-grpc-java=D:\develop\protoc-gen-grpc-Java\protoc-gen-grpc-java.exe //指向生产grpc代码的插件
--grpc-java_out=C:\Users\Luo_xuri\Desktop\build\ //注意前面的空格,代码输出到的路径
common\*.proto //proto文件