协议缓冲区:如何导入



我有两个。proto文件:

第一个文件:

package com.test.model;
message ProtoModel  {
    required CustomObj custom=1;
}

第二个文件:

package com.test.model;
message CustomObj {
    required string smth=1;
}

这里的问题是"CustomObj"被认为是"未解决的引用"。因此,我尝试将第二个文件导入到第一个文件中:

import "com/test/model/firstFile.proto"
package com.test.model;    
message ProtoModel  {
    required CustomObj custom=1;
}

我仍然得到同样的问题!!

import语句是相对于您调用protoc的位置的文件夹。看起来你已经把它当作相对于包的了。

。如果(像我一样)您将这两个文件存储在src/main/resources中,您将按照以下方式调用协议:

protoc src/main/resources/firstFile.proto src/main/resources/secondFile.proto --java_out=src/generated/java

,你的import语句应该是import "src/main/resources/firstFile.proto"

如果您想根据包名将文件存储在子文件夹中,那么您只需在顶级文件夹名之后相应地添加此。

HTH

最新更新