web-dev-qa-db-ja.com

protocがサービススタブファイルを生成しない

私はグーグルプロトで遊んだところです。プロトJavaの例にあるプロトファイルをコンパイルしようとすると、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

test/io/grpc:例

test/io/grpc/examples:helloworld

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

他の誰かがこの問題に直面しましたか?

27
Raman Sonkhla

表示されているコマンドラインではgrpcプラグインが有効になっていません。 grpcプラグインの_out引数を指定する必要があります。これにより、プラグインが有効になり、ファイルを出力する場所が指定されます。プラグインはPATHに含まれていない可能性が高いため、--pluginを使用してプラグインを検索する方法をprotocに指示する必要もあります。

したがって、2つの引数を追加する必要があります。

--plugin=protoc-gen-grpc-Java=path/to/protoc-gen-grpc-Java --grpc-Java_out=path/to/output/dir

詳細については、gRPC コンパイラのドキュメント を参照してください。

25
Eric Anderson

これらの オプション を.proto(言語に基づく)に追加して、抽象的なサービスを生成できます。

option cc_generic_services = true;
option Java_generic_services = true;
option py_generic_services = true;

protoc cmdに--plugin=EXECUTABLEオプションを追加して、カスタムcode generator pluginを使用して、「抽象」サービスに依存するのではなく、各システムに固有のコードを生成することもできます。エリックの提案のように。

1
djzhu