协议缓冲区:如何导入?

我有2个.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,如下所示:

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

并且您的import语句将import "src/main/resources/firstFile.proto"

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

HTH