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
для генерации кода, более специфичного для каждой системы, вместо того, чтобы полагаться на "абстрактные" сервисы. Так же, как предложение Эрика.