Aar*_*esh 6 import protocol-buffers
尝试使用以下命令编译名为UserOptionsProto.proto的原型文件,该文件具有名为MailAccountProto.proto的导入
protoc --proto_path=/home/project_new1/account --java_out=/home/project_new1/source /home/project_new1/settings/Useroptions.proto
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/home/project_new1/settings/UserOpti??ons.proto: File does not reside within any path specified using --proto_path (or -I). You must specify a --proto_path which encompasses this file.
Run Code Online (Sandbox Code Playgroud)
PS:目录/ home/project_new1/kernel/source/com/adventnet/vo/kernel/model/settings
目录中的UserOptionsProto.proto导入目录/ home/project_new1/kernel/source/com/adventnet /中的MailAccountProto.proto VO /核心/模型/帐户
Proto描述符文件:
UserOptionsProto.proto
package settings;
import "Account.proto";
option java_outer_classname = "UserOptionsVOProto";
Run Code Online (Sandbox Code Playgroud)
MailAccountProto.proto
package account;
option java_outer_classname = "AccountVOProto";
message Object
{
optional string userId = 1;
optional string service = 2;
}
Run Code Online (Sandbox Code Playgroud)
Ken*_*rda 12
正如错误消息所述,您在命令行上传递的文件需要位于其中一个文件中--proto_path
.在您的情况下,您只指定了以下之一--proto_path
:
/home/project_new1/
Run Code Online (Sandbox Code Playgroud)
但是你传递的文件是:
/home/project_new1/settings/UserOpti?ons.proto
Run Code Online (Sandbox Code Playgroud)
请注意,该文件不在account
子目录中; 而是在settings
.
您有两种选择:
--proto_path
参数以添加.../settings
到路径.(推荐)使用源树的根作为proto路径.例如:
protoc --proto_path=/home/project_new1/ --java_out=/home/project_new1 /home/project_new1/settings/UserOpti?ons.proto
Run Code Online (Sandbox Code Playgroud)在这种情况下,要导入Account.proto
,您需要写:
import "acco??unt/Account.proto";
Run Code Online (Sandbox Code Playgroud)