我的代码在Eclipse中编译得很好,但是当我尝试从命令行编译(通过我们基于Ruby的buildr系统)时,我得到了以下错误消息:
static import only from classes and interfaces
建议不允许静态导入公共静态字段。我应该查找什么来帮助诊断此问题?如何修复?
**更新:**根据@Ted的请求,引用文件中的常量声明:
public static final String NULL = "<NULL>";
以及引用文件中的(bowdlerized)引用:
import static my.path.MyClass.NULL;
5条答案
按热度按时间ss2ws0br1#
我猜Eclipse和buildr使用的是不同的Java编译器版本或不同的编译器标志。Java 7编译器(bug ID: 715906)中有一个bug,当您静态导入特定字段时,它会生成此错误。解决方法是使用通配符静态导入。因此,请不要:
执行以下操作:
zf9nrax12#
晚回答,但我刚刚得到了一个类似的问题,并想通了。我会张贴在情况下,它有助于其他人谁发现这个页面...
在一次大规模合并和重构之后,我意外地将一个测试类放入src/main/java而不是src/test/java中时,也遇到了类似的错误。因为JUnit依赖项是scope=tests,所以它在纯maven中不起作用。
wkftcu5l3#
我也遇到了这个错误,我的问题原来是在我的测试源文件中任性地静态导入了一个junit 4包。
我有以下内容:
我删除了
import static org.junit.Assert.fail;
(不知道我一开始是如何设法把它放进去的),现在一切都正常了。balp4ylt4#
我不小心将
test
目录设置为源文件。而测试源文件被认为是源文件。| - -源代码
| - -主要
| - -测试
修复:
e37o9pze5#
@m-watson提到的一些相同的解决方案
我已经取代了
与
而且成功了