By Raman Sonkhla


2015-06-24 14:42:24 8 Comments

I have just started playing with google proto. When I try to compile proto file present in proto-java example, it does not generate any grpc file.

proto file, https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/hello_world.proto

terminal output,

[email protected]:~/sandbox/grpc-java/examples$ protoc --version libprotoc 3.0.0 [email protected]:~/sandbox/grpc-java/examples$ protoc --java_out=test/ -I../../grpc-java/examples ../../grpc-java/examples/src/main/proto/hello_world.proto [email protected]:~/sandbox/grpc-java/examples$ ls -R test/ test/: io

test/io: grpc

test/io/grpc: examples

test/io/grpc/examples: helloworld

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

Has anybody else faced this issue?

2 comments

@djzhu 2019-04-18 07:07:52

You can add these option to your .proto (base on your language) to generate abstract services:

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

You can also add --plugin=EXECUTABLE option in your protoc cmd to use custom code generator plugin to generate code more specific to each system, rather than rely on the "abstract" services. Just like Eric's suggestion.

@Eric Anderson 2015-06-24 15:56:46

The command line you are showing does not enable the grpc plugin. You need to specify an _out argument for the grpc plugin, which enables the plugin and specifies where it should output files. Since the plugin is likely not in your PATH, you also need to tell protoc how to find the plugin with --plugin.

So you need to add two arguments:

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

For more info, see the gRPC compiler documentation.

@vach 2016-04-27 10:19:32

Hi Eric, i'm trying to make this work, i've downloaded protoc-gen-grpc-java.jar from maven, but no matter how i feed it to that argument it will still tell me that "file not found or is not executable", maybe i shall have some other artifact instead of jar file?

@vach 2016-04-27 10:22:02

is your "path/to/protoc-gen-grpc-java" pointing to a jar file or something else?

@Eric Anderson 2016-04-27 21:43:51

path/to/protoc-gen-grpc-java is a binary (e.g., a native ELF binary for Linux). It is not a JAR. You can find pre-built versions at search.maven.org/… (e.g., linux-x86_32.exe, which could be used like --plugin=protoc-gen-grpc-java=path/to/linux-x86_32.exe)

@vach 2016-04-28 03:45:30

Thanks i've already compiled it from github project, although it was generating not valid code (grpc-all.jar was missing some code which was used in generated one) so i just created a gradle mini project which only takes care of protobuf part... i hope we will have official support for sbt in future...

@Mi-La 2017-10-12 12:19:12

@EricAnderson Thans, this is what I was looking for. However, ELF binary with .exe suffix, it sounds really weird ;) I didn't believe that it's really what need when I found it for the first time...

Related Questions

Sponsored Content

2 Answered Questions

[SOLVED] Retrofit and GRPC

2 Answered Questions

[SOLVED] Grpc cannot resolve symbol GreeterGrpc

  • 2017-06-05 06:18:44
  • Alex
  • 1788 View
  • 4 Score
  • 2 Answer
  • Tags:   java grpc

1 Answered Questions

1 Answered Questions

1 Answered Questions

1 Answered Questions

0 Answered Questions

Importing .proto files from a maven dependency?

1 Answered Questions

[SOLVED] Protocal buffers aren't generating service stubs

Sponsored Content