仅从类和接口静态导入

2022-09-01 13:09:03

我的代码在Eclipse中编译得很好,但是当我尝试从命令行编译(通过我们基于ruby的构建器系统)编译时,我收到以下错误消息:

static import only from classes and interfaces

建议不允许静态导入公共静态字段。我应该寻找什么来帮助诊断此问题?我该如何修复它?

更新:根据@Ted的请求,引用文件中的常量声明:

public static final String NULL = "<NULL>";

和引用文件中的(弓形化)引用:

import static my.path.MyClass.NULL;

答案 1

我的猜测是,Eclipse 和 buildr 要么使用不同的 Java 编译器版本,要么使用不同的编译器标志。Java 7 编译器中存在一个错误(错误 ID:715906),当您静态导入特定字段时,该错误会生成此错误。解决方法是使用通配符静态导入。因此,而不是:

import static pkg.Class.staticField;

这样做:

import static pkg.Class.*;

答案 2

迟到的答案,但我只是得到了一个类似的问题,并弄清楚了。我会发布,以防它帮助找到此页面的其他人...

在一次大的合并和重构之后,我不小心将测试类放入src /main/java而不是src/test/java中,我得到了类似的错误。由于 JUnit 依赖项是 scope=tests,因此它在纯 maven 中不起作用。也许你有同样的问题


推荐