我一直在尝试从生成基本的gRPC客户端和服务器接口。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) {}
}
我运行的命令是:java_out=${OUTPUT_DIR}path/to/proto/file
根据grpc网站(特别是这里),一个路由指南RPC。java,它包含一个基类RouteGuideGrpc。RouteGuideImplBase,以及RouteGuide服务中定义的所有方法都应该是从上面的protoc命令生成的,但是没有为我生成该文件。
有没有人遇到过类似的问题?官方文件是否完全不正确?还有谁会对我如何生成缺少的类有什么建议吗?
这可能会在将来帮助其他人,所以我将回答我自己的问题。
我相信gRPC代码生成的java留档不是完全最新的,信息分散在不同的官方存储库中。
因此,为了按预期生成所有gRPC java服务基类,您需要为协议cli指定一个额外的标志,就像gRPC-java\u out=${OUTPUT\u DIR}一样。但为了让这个额外的标志发挥作用,您需要有一些额外的东西:
>
确保将二进制文件位置添加到PATH环境变量中,并将二进制文件重命名为“protoc gen grpc java”(即protoc-cli希望在路径中使用的名称)。
最后,您已经准备好运行正确的命令
协议--java_out=${OUTPUT_DIR}--grpc-java_out=${OUTPUT_DIR}path/to/proto/file
,现在应该生成服务基类,如RouteGuideGrpc。RouteGuideImBase
应该在以前没有生成的时候生成。
我希望这个解释将来能帮助其他人。
我创建了一个简单的. proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。为规定的包生成了一个java文件。但是,生成的文件不会编译。. proto文件很简单,只有一条消息,其中包含一堆简单类型的可选字段(正确编号)。. java文件不编译,例如: 构造函数生成了消息。FieldAccessorTable(Descriptors.Descriptor,字符串[])未
问题内容: 当我不得不为一个陌生的新项目生成javadocs时,我发现我花了很长时间尝试简单地编写正确的命令,指定所有包,所有源代码树等,这既耗时又容易出错:我可能缺少某些资料。 假设我有一个目录myproj,在它的下面有一些软件包(以及各种其他资源和东西),在那些软件包目录下最终有一些src /目录,然后是许多my / awesome / java / project / package类型
问题内容: 我有一个sql脚本(这只是架构定义)。该脚本是mysql dumb的修改版本(摆脱了h2不喜欢的坏字符)。 该脚本将运行,并且该架构已插入到h2数据库中,但是问题在于所有数据库名称都使用大写形式(“ xyz”被转换为“ XYZ”)。 我需要它们保持小写字母,因为我的应用程序正在寻找小写字母(而mysql db中的所有表都是小写字母)。 为什么会这样呢?我怎样才能告诉H2不这样做?有没有
当使用keytool生成keystore时,我收到错误非法选项:genkeypair。但是当我看到帮助时,genkeypair是可用的选项。我在指挥上做错了什么? C:\program files\java\jdk1.7.0_51\bin>keytool.exe-genkeypair-alias orbis-storetype pkcs12-keyalg rsa-keysize 2048-keys
在查看文档时,有一个API调用来删除单个pod,但是有一种方法可以删除所有名称空间中的所有pod吗?
本文向大家介绍如何基于python生成list的所有的子集,包括了如何基于python生成list的所有的子集的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何基于python生成list的所有的子集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 不使用递归且不引入标准库,单纯用两个for循环即可得出一个list的所有子集 主要思想