37

我刚开始玩谷歌原型。当我尝试编译 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

测试/io:grpc

测试/io/grpc:示例

测试/io/grpc/示例:helloworld

test/io/grpc/examples/helloworld: HelloRequest.java
HelloResponse.java HelloWorldProto.java HelloRequestOrBuilder.java HelloResponseOrBuilder.java

有没有其他人遇到过这个问题?

4

2 回答 2

36

您显示的命令行未启用 grpc 插件。您需要为 grpc 插件指定一个 _out 参数,该参数启用插件并指定它应该输出文件的位置。由于该插件可能不在您PATH--plugin.

所以你需要添加两个参数:

--plugin=protoc-gen-grpc-java=path/to/protoc-gen-grpc-java --grpc-java_out=path/to/output/dir

有关详细信息,请参阅 gRPC编译器文档

于 2015-06-24T15:56:46.303 回答
25

您可以将这些选项添加到您的 .proto 中(基于您的语言)以生成抽象服务:

option cc_generic_services = true;
option java_generic_services = true;
option py_generic_services = true;

您还可以在您的cmd 中添加--plugin=EXECUTABLE选项以使用自定义生成更特定于每个系统的代码,而不是依赖“抽象”服务。就像埃里克的建议一样。protoccode generator plugin

于 2019-04-18T07:07:52.117 回答