我刚刚开始玩google proto。当我尝试编译proto-java示例中存在的proto文件时,它不会生成任何grpc文件。
proto文件, https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/hello_world.proto
终端输出,
rsonkhla @ raman-OptiPlex-9020:〜/ sandbox / grpc-java / examples $ protoc --version libprotoc 3.0.0 rsonkhla @ raman-OptiPlex-9020:〜/ sandbox / grpc-java / examples $ protoc --java_out = test / -I ../../ grpc-java / examples ../../grpc-java/examples/src/main/proto/hello_world.proto rsonkhla @ raman-OptiPlex-9020:〜/ sandbox / grpc-java / examples $ ls -R test / test /:io
test / io:grpc
test / io / grpc:examples
test / io / grpc / examples:helloworld
test / io / grpc / examples / helloworld:HelloRequest.java
HelloResponse.java HelloWorldProto.java HelloRequestOrBuilder.java HelloResponseOrBuilder.java
还有其他人遇到过这个问题吗?
答案 0 :(得分:24)
您显示的命令行未启用grpc插件。您需要为grpc插件指定一个_out参数,该参数启用插件并指定它应该输出文件的位置。由于该插件可能不在您的PATH
中,因此您还需要告诉protoc如何使用--plugin
找到该插件。
所以你需要添加两个参数:
--plugin=protoc-gen-grpc-java=path/to/protoc-gen-grpc-java --grpc-java_out=path/to/output/dir
有关详细信息,请参阅gRPC compiler documentation。
答案 1 :(得分:1)
您可以将这些option添加到您的.proto(基于您的语言)以生成抽象服务:
option cc_generic_services = true;
option java_generic_services = true;
option py_generic_services = true;
您还可以在--plugin=EXECUTABLE
cmd中添加protoc
选项,以使用自定义code generator plugin
生成更特定于每个系统的代码,而不是依靠“抽象”服务。就像埃里克的建议一样。