Protoc не создает служебные заглушки

Я только начал играть с google proto. Когда я пытаюсь скомпилировать прото файл, присутствующий в примере с прото-java, он не генерирует никакого файла grpc.

прото файл, 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: ~/песочница/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: примеры

test/io/grpc/examples: helloworld

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

Кто-нибудь еще сталкивался с этой проблемой?

Ответ 1

Отображаемая вами командная строка не включает плагин grpc. Вам нужно указать аргумент _out для плагина grpc, который включает плагин и указывает, где он должен выводить файлы. Поскольку плагин, вероятно, не находится в вашем PATH, вам также необходимо сообщить протоку, как найти плагин с --plugin.

Итак, вам нужно добавить два аргумента:

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

Для получения дополнительной информации см. документацию компилятора gRPC .

Ответ 2

Вы можете добавить эти опции в ваш .proto (на основе вашего языка) для генерации абстрактных сервисов:

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

Вы также можете добавить --plugin=EXECUTABLE в свой protoc cmd, чтобы использовать пользовательский code generator plugin для генерации кода, более специфичного для каждой системы, вместо того, чтобы полагаться на "абстрактные" сервисы. Так же, как предложение Эрика.