web-dev-qa-db-fra.com

protocole ne génère pas de fichiers de raccord de service

Je viens de commencer à jouer avec google proto. Lorsque j'essaie de compiler le fichier proto présent dans l'exemple proto-Java, il ne génère aucun fichier grpc.

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

sortie terminale,

rsonkhla @ raman-OptiPlex-9020: ~/sandbox/grpc-Java/examples $ protocole --version libprotoc 3.0.0 rsonkhla @ raman-OptiPlex-9020: ~/sandbox/grpc-Java/exemples $ protocole --Java_out = test/-I ../../ grpc-Java/examples ../../grpc-Java/examples/src/main/proto/hello_world.proto rsonkhla @ raman-OptiPlex-9020: ~/sandbox/grpc-Java/exemples $ ls -R test/test /: io

test/io: grpc

test/io/grpc: exemples

test/io/grpc/exemples: helloworld

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

Quelqu'un d'autre a-t-il fait face à ce problème?

27
Raman Sonkhla

La ligne de commande que vous affichez n'active pas le plugin grpc. Vous devez spécifier un argument _out pour le plugin grpc, qui active le plugin et spécifie où il doit sortir les fichiers. Étant donné que le plugin n'est probablement pas dans votre PATH, vous devez également indiquer à Protocol comment trouver le plugin avec --plugin.

Vous devez donc ajouter deux arguments:

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

Pour plus d'informations, consultez le gRPC documentation du compilateur .

25
Eric Anderson

Vous pouvez ajouter ces option à votre .proto (basé sur votre langue) pour générer des services abstraits:

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

Vous pouvez également ajouter l'option --plugin=EXECUTABLE Dans votre protoc cmd pour utiliser code generator plugin Personnalisé afin de générer du code plus spécifique à chaque système, plutôt que de compter sur les services "abstraits". Tout comme la suggestion d'Eric.

1
djzhu