MAC安装protoc及生成grpc-java代码

使用Protocal Buffers

1. 安装protoc

brew install automake
brew install libtool
brew install protobuf

2. 检查

protoc --version

 

3. 生成grpc-java分三步

   第一步,编辑proto文件(dlgrpc.proto)

syntax = "proto3";

//把不同的类生成到不同的文件,false只产生一个文件 option java_multiple_files
=true;

//如果不指定类名,编译会生成一个.proto文件同名的类。
option java_outer_classname="DLProto";

//生成proto文件定义的rpc方法以及客户端stub(这个对gRPC没有用)
//option java_generic_services = true;
//
option java_package="com.nuctech.saturn.grpc";

service Platform{
    rpc getDl(DlRequest) returns (DlReply){}
}

message DlRequest{
    string id=1;
    string name=2;
}

message DlReply{
    string res=1;
}

 第二步, 生成message相关的类

protoc --java_out=./ dlgrpc.proto

//DLProto.java
//DlReply.java
//DlReplyOrBuilder.java
//DlRequest.java
//DlrequestOrBuilder.java

 第三步, 生成service相关的类(包括服务端的抽象类PlatformImplBase以及客户端的PlatformBlockingStub类)(注意先看第5,安装plugin)

 protoc --plugin=protoc-gen-grpc-java=/path/protoc-gen-grpc-java-1.45.1-osx-x86_64.exe --grpc-java_out=./ dlgrpc.proto

//PlatformGrpc.java

  

5. 安装plugin

   在proto文件中添加 option java_generic_services = true 会生成一个Platform类,但这个类无法使用,需要plugin。

   原因是protocal buffers不针对一个特定的RPC,使用gRPC需要对应的plugin

  先去掉后缀exe,然后

chmod +x protoc-gen-grpc-java
还需要在设置中设置允许安装

(这个exe虽然去掉了,但是终端中仍然显示后缀,所以命令就写全了)  

   不修改chmod会报错

  program not found or is not executable

  Please specify a program using absolute path or make sure the program is available in your PATH system variable

--grpc-java_out: protoc-gen-grpc-java: Plugin failed with status code 1.

 (https://stackoverflow.com/questions/55023435/grpc-out-protoc-gen-grpc-plugin-failed-with-status-code-1-on-osx-java)

 

6. 生成的文件

 

posted @ 2022-04-26 11:19  jason47  阅读(4207)  评论(0编辑  收藏  举报