2012-08-02 108 views
10

我的代码在Eclipse编译罚款,但是当我尝试从命令行编译(通过我们基于Ruby的buildr系统),我收到此错误信息:静态导入

static import only from classes and interfaces 

暗示公共静态字段的静态导入是不允许的。我应该寻找什么来帮助诊断这个问题?我该如何解决它?

更新: 每@特德的要求,在引用文件中的常量声明:

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

,并在参考文件(bowdlerized)参考:

import static my.path.MyClass.NULL; 
+2

请发布生成此消息的代码 - 导入语句和正在导入的字段。 – 2012-08-02 16:47:22

回答

7

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

import static package.Class.staticField; 

做到这一点:

import static package.Class.*; 
6

晚的答案,但我只是得到了类似的问题,理解了它。我会发布的情况下,以帮助其他人谁发现这个网页...

我有一个类似的错误,当大合并和重构后,我不小心把测试类放入src/main/java而不是src /测试/ JAVA。由于JUnit依赖项是scope = tests,所以它在纯maven中不起作用。也许你有相同的问题