Protobuffs importer à partir d'un autre répertoire
Tout en essayant de compiler un proto fichier nommé UserOptions.proto qui dispose d'une importation de Compte nommé.proto à l'aide de la commande ci-dessous
protoc --proto_path=/home/project_new1/account --java_out=/home/project_new1/source /home/project_new1/settings/Useroptions.proto
J'obtiens l'erreur suivante :
/home/project_new1/settings/UserOptions.proto: File does not reside within any path specified using --proto_path (or -I). You must specify a --proto_path which encompasses this file.
PS: UserOptions.proto présents dans le répertoire /home/project_new1/paramètres
les importations en Compte.proto présents dans le répertoire
/home/project_new1/compte
Proto descripteur de fichiers:
UserOptions.proto
package settings;
import "Account.proto";
option java_outer_classname = "UserOptionsVOProto";
Compte.proto
package account;
option java_outer_classname = "AccountVOProto";
message Object
{
optional string userId = 1;
optional string service = 2;
}
- Il serait très utile si vous souhaitez donner un bref exemple complet de fichier de mise en page, le contenu du fichier,
protoc
de commande et résultat - qui illustre le problème. - J'ai aussi essayé en spécifiant le paquet niveau de détails dans l'instruction d'importation dans le fichier et de mentionner le upperlevel dans le répertoire --protoc lors de la compilation. Il ne détecte pas les importer dans ce cas.
- Merci de modifier cela dans la question - il est difficile de lire dans les commentaires. Et donner le proto de détails afin que nous puissions reproduire le problème, plutôt que de simplement décrire.
- sry ab qu'un nw j'ai édité que dans une question
- Pas vraiment, vous n'avez pas encore donné tout ce dont nous avons besoin pour reproduire ce tout simplement.
- laissez-nous continuer cette discussion dans le chat
- Bon, maintenant, c'est probablement assez d'informations, même si nous n'avons vraiment pas besoin de ce niveau d'imbrication etc pour illustrer le problème - à l'avenir, merci de faire de votre mieux pour le rendre vraiment facile pour les gens à reproduire le problème. Je vais jeter un oeil quand j'aurais le temps ce soir.
- ya sûr ll ne t à l'avenir un bon tq:)
Vous devez vous connecter pour publier un commentaire.
Que les états message d'erreur, le fichier que vous passer sur la ligne de commande doit être dans l'un des
--proto_path
s. Dans votre cas, vous avez spécifié un--proto_path
de:Mais le fichier que vous êtes en passant est:
Avis que le fichier n'est pas dans le
account
sous-répertoire; c'est danssettings
à la place.Vous avez deux options:
--proto_path
argument à ajouter.../settings
le chemin.(Recommandé) d'Utiliser le racine de votre arborescence des sources comme le proto chemin. E. g.:
Dans ce cas, pour importer des
Account.proto
, vous aurez besoin d'écrire:package
déclarationMailAccount.proto
, vous devez l'écrire commecom.adventnet.vo.kernel.model.account.BaseDFSLookupProto
.java_outer_classname
s'applique uniquement au code Java, pas.proto
code..proto
qui a un autrepackage
ligne, vous devez préfixer n'importe quel type de nom de fichier avec son nom. C'est vraiment tout là est à lui.Pour ceux d'entre nous qui le veut vraiment énoncés, voici un exemple où j'ai installé le protoc beta pour le gRPC à l'aide de Packages NuGet Google.Protobuf, Grpc.De base et de Grpc.Outils. Ma solution paquets sont un niveau au-dessus de ma Grpc répertoire (c'est à dire à BruTrader\packages). Mon .proto fichiers sont au BruTrader\Grpc\protos.