Java 仅从类和接口静态导入

Java 仅从类和接口静态导入,java,static-import,Java,Static Import,我的代码在Eclipse中编译得很好,但是当我尝试从命令行(通过基于ruby的buildr系统)编译时,我收到以下错误消息: static import only from classes and interfaces 建议不允许静态导入公共静态字段。我应该寻找什么来帮助诊断此问题?我怎样才能修好它 更新: 根据@Ted的请求,引用文件中的常量声明: public static final String NULL = "<NULL>"; 我猜Eclipse和buildr使用的是不

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

static import only from classes and interfaces
建议不允许静态导入公共静态字段。我应该寻找什么来帮助诊断此问题?我怎样才能修好它

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

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

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

import static pkg.Class.staticField;
这样做:

import static pkg.Class.*;

迟交的答案,但我只是得到了一个类似的问题,并解决了它。我会发布,以防它帮助任何其他人谁找到这个页面


在一次大的合并和重构之后,我意外地将一个测试类放在src/main/java而不是src/test/java中,我遇到了一个类似的错误。因为JUnit依赖项是scope=tests,所以它在纯maven中不起作用。可能您遇到了相同的问题

我意外地将
test
目录设置为源代码。测试源被视为源文件

sourceSets.main.java.srcDirs 'src'
|--src
  | -- 主要
  | -- 试验

修正:


我也有这个错误,我的问题是在测试源文件中随意静态导入JUnit4包

我有以下几点:

import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTimeout;

我删除了导入静态org.junit.Assert.fail(不知道我最初是如何把它放在那里的),现在一切都正常了。

请发布生成此消息的代码——导入语句和要导入的字段。
sourceSets.main.java.srcDirs 'src/main'
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTimeout;