协议缓冲区:如何导入?

Ech*_*cho 2 java protocol-buffers

我有2个.proto文件:

第一档:

package com.test.model;

message ProtoModel  {
    required CustomObj custom=1;
}
Run Code Online (Sandbox Code Playgroud)

第二档:

package com.test.model;

message CustomObj {
    required string smth=1;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是"CustomObj"被称为"未解决的参考".因此,我试图将第二个文件导入第一个文件:

import "com/test/model/firstFile.proto"

package com.test.model;    

message ProtoModel  {
    required CustomObj custom=1;
}
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的问题!

lah*_*her 5

import语句是相对于您调用的位置的文件夹protoc.看起来你已经将它视为相对于包而不是它.

例如,如果(像我一样)将两个文件都存储起来src/main/resources,你可以调用protoc,如下所示:

protoc src/main/resources/firstFile.proto src/main/resources/secondFile.proto --java_out=src/generated/java
Run Code Online (Sandbox Code Playgroud)

你的进口声明将是 import "src/main/resources/firstFile.proto"

如果要根据包名将文件存储在子文件夹中,则只需在顶级foldername之后相应地添加它.

HTH