我刚刚开始玩谷歌原型。当我试图编译proto java示例中的proto文件时,它不会生成任何grpc文件。
proto文件,https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/hello_world.proto
终端输出,
rsonkhla@raman-OptiPlex-9020:~/ssandbox/grpc-java/examples$protoc--libprotoc 3.0.0版本rsonkhla@raman-OptiPlex-9020:~/ssandbox/grpc-java/examples$protoc--java_out=测试/-I..//grpc java/examples..//grpc java/examples/src/main/proto/helloworld.protorsonkhla@raman-OptiPlex-9020:~/ssandbox/grpc-java/examples$ls-R测试/测试/:io
test/io:grpc
test/io/grpc:示例
test/io/grpc/examples:helloworld
test/io/grpc/examples/helloworld:HelloRequest.java
HelloResponse.java HelloWorldProto.javaHelloRequestOrBuilder.java HelloResponseOrBuilder.java
有其他人面临过这个问题吗?
您显示的命令行未启用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编译器文档。
您可以将这些选项添加到.proto(基于您的语言)中以生成抽象服务:
option cc_generic_services = true;
option java_generic_services = true;
option py_generic_services = true;
您还可以在protoc
命令中添加--plugin=EXECUTABLE
选项,以使用自定义code generator plugin
生成更特定于每个系统的代码,而不是依赖于"抽象"服务。就像孙的建议。