我有一个编译没有错误的文件Foo.java
。但是当我添加单行
import static org.junit.Assert.assertNotEquals;
这会在我的ant构建中导致以下错误:
compileTests:
[javac] Compiling 27 source files to C:examplebin
[javac] C:examplesrcFoo.java:7: error: cannot find symbol
[javac] import static org.junit.Assert.assertNotEquals;
[javac] ^
[javac] symbol: static assertNotEquals
[javac] location: class
[javac] 1 error
我正在使用JUnit 4.4。junit-4.4.jar
包含在javac
任务的classpath
中
我已经尝试运行不同的编译器版本与标志-Dbuild.compiler=javac1.7
和-Dbuild.compiler=javac1.8
,但它没有区别。我仍然得到完全相同的错误。
assertNotEquals
是唯一一个从Assert中静态导入会导致此错误的。
我已经看到这个帖子Java静态导入导致编译错误。可能的编译错误?我试着自己导入Assert
,并像这篇文章建议的那样,用Assert.
前缀每个断言语句。我得到了同样的错误,这次是在Assert.assertNotEquals()
的方法调用而不是import语句。
导入成功编译并在Eclipse上运行。
有人知道这是什么原因吗?我想弄清这一点,而不是必须实现一个变通的解决方案。
您正在使用Junit 4.4。AssertNotEquals
直到4.11才添加
JUnit 4.11发布说明
如果您更新到最新的JUnit jar。编译器错误应该消失。Eclipse可能正在使用自己的内置版本,该版本具有最新的方法。