protocol .proto文件转.java文件

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或者
 
    
  1. C:\Users\Luo_xuri\Desktop\fabric-sdk-java-master\src\main\proto\peer>    // cd到某目录下
  2. protoc                                                                    // protoc
  3. -I=. -I=                                                                 // 注意-前面的空格
  4. C:\Users\Luo_xuri\Desktop\protobuf-3.1.x\src\                             // 指向protobuf的src,找到timestamp.proto
  5. proposal_response.proto --java_out=./                                    // 将这个.protoc文件输出到当前目录(注意前面的空格)
或者将timestamp.proto文件copy到proto文件里面,修改.protoc文件中的import,也就是下面的5

5.如果执行4.1之后出现
 
    
  1. google/protobuf/timestamp.proto: File not found.
  2. common/common.proto: Import "google/protobuf/timestamp.proto" was not found or had errors.
  3. common/common.proto:86:5: "google.protobuf.Timestamp" is not defined.
  4. configtx.proto: Import "common/common.proto" was not found or had errors.
  5. configtx.proto:53:5: "Envelope" is not defined.
  6. configtx.proto:69:5: "ChannelHeader" is not defined.
  7. configtx.proto:88:5: "ChannelHeader" is not defined.
这些类似的问题都是因为.proto文件中的import找不到路径,可以像以下那么修改
    一开始是下面这样
 
     
  1. import "google/protobuf/timestamp.proto";
    改为:
    将timestamp.proto文件copy到项目的proto文件下
    然后从之前的就变成这样了:
 
     
  1. import "timestamp.proto";
再执行4.2中的“ 或者 ”方法,当然其中的-I=的路径也要指到timestamp.proto所在目录

6.根据插件(protoc-gen-grpc-java.exe)生产grpc类的命令
 
    
  1. C:\Users\Luo_xuri\Desktop\fabric-master\protos>
  2. protoc --plugin=protoc-gen-grpc-java=D:\develop\protoc-gen-grpc-Java\protoc-gen-grpc-java.exe        //指向生产grpc代码的插件
  3. --grpc-java_out=C:\Users\Luo_xuri\Desktop\build\                                                    //注意前面的空格,代码输出到的路径
  4. common\*.proto                                                                                      //proto文件

你可能感兴趣的:(protocol .proto文件转.java文件)