sha*_*een 5 protocol-buffers grpc grpc-java protobuf-java
我一直在试图产生从基本GRPC客户端和服务器接口.proto服务定义在这里从GRPC官方回购。该文件中定义的相关服务(来自上面的链接)如下:
service RouteGuide {
rpc GetFeature(Point) returns (Feature) {}
rpc ListFeatures(Rectangle) returns (stream Feature) {}
rpc RecordRoute(stream Point) returns (RouteSummary) {}
rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}
}
Run Code Online (Sandbox Code Playgroud)
我运行的命令是 protoc --java_out=${OUTPUT_DIR} path/to/proto/file
根据 grpc 站点(特别是此处),RouteGuideGrpc.java包含一个基类RouteGuideGrpc.RouteGuideImplBase的 a应该是从protoc上面的命令生成的 RouteGuide 服务中定义的所有方法,但该文件不会为我生成。
有没有人遇到过类似的问题?官方文档只是不正确吗?有没有人对我可以做些什么来生成那个缺失的类有什么建议?
这可能会在未来帮助其他人,所以我会回答我自己的问题。
我相信 gRPC 代码生成的 java 文档不是完全最新的,信息分散在不同的官方存储库中。
事实证明,为了按预期生成所有 gRPC java 服务基类,您需要protoc像这样为cli指定一个额外的标志grpc-java_out=${OUTPUT_DIR}。但是为了让这个额外的标志起作用,你需要做一些额外的事情:
protoc-gen-grpc-java:您可以从这里的maven 中心获取与您的系统相关的二进制文件(该链接适用于 v1.17.1)。如果没有可用于您的系统的预构建二进制文件,您可以从此处的 github 存储库说明自己编译一个。确保将二进制位置添加到您的 PATH 环境变量中,并将二进制文件protoc-gen-grpc-java准确地重命名为“ ”(这是protoccli 期望在路径中具有的名称)。
最后,您已准备好运行正确的命令protoc --java_out=${OUTPUT_DIR} --grpc-java_out=${OUTPUT_DIR} path/to/proto/file,现在RouteGuideGrpc.RouteGuideImplBase应该生成以前没有的服务基类。
我希望这个解释能在未来帮助别人。
| 归档时间: |
|
| 查看次数: |
2038 次 |
| 最近记录: |