无法在默认包之外引用generated-sources类

时间:2016-04-13 13:35:27

标签: java maven protocol-buffers

我正在使用Google的协议缓冲区(与Protocol Buffers maven插件结合使用),它将.proto文件编译成一个类。我可以完美地使用默认包中生成的类,但不能在它之外。我真的不知道如何更好地解释它,所以我会给你看一些照片。

Working Not working

我已经尝试了对Hrp类进行子类化,但这不起作用(生成的类是final)。每次重新生成Hrp类时,也不能选择移动类。

我不确定这是否相关,但生成的类是public final。它包含一个空的private构造函数。

我还尝试为生成的sources文件夹设置生成的源包前缀,但这也不起作用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试在协议缓冲区定义中添加标识。见Protocol Buffers Package

syntax = "proto3";
package MyPackage;
option optimize_for = SPEED;

message Product {
   repeated ASale sale = 1; 
}

然后当你生成 Java~Protocol~缓冲区代码(使用protoc)时,它将在 MyPackage 包中,你可以将它导入到你的java中代码以正常方式。

在java中,您无法默认包导入任何内容;我认为这是你的问题。见How to access java-classes in the default-package?