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
从 https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/
下载 protoc-gen-grpc-java-1.45.1-osx-x86_64.exe
先去掉后缀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. 生成的文件