assertNotEquals静态导入导致编译错误

时间:2015-08-24 20:28:43

标签: java eclipse ant junit

我有一个文件Foo.java编译没有错误。但是当我添加单行

import static org.junit.Assert.assertNotEquals;

这导致我的ant build出现以下错误:

compileTests:
[javac] Compiling 27 source files to C:\example\bin
[javac] C:\example\src\Foo.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任务的classpath中包含javac

我尝试使用标记-Dbuild.compiler=javac1.7-Dbuild.compiler=javac1.8运行不同的编译器版本,但它没有任何区别。我仍然得到完全相同的错误。

assertNotEquals是Assert中唯一导致此错误的静态导入。

我已经看过这篇文章Java static import causing compile error. Probable compiler bug? 我尝试单独导入Assert并使用Assert.添加每个断言语句,就像这篇帖子所建议的那样。我得到了同样的错误,这次是在Assert.assertNotEquals()的方法调用而不是import语句。

然而,导入成功编译并在Eclipse上运行。

有没有人对此事有任何想法?我想深入了解这一点,而不必实施解决方案。

1 个答案:

答案 0 :(得分:4)

您使用的是Junit 4.4。直到4.11才添加AssertNotEquals

JUnit 4.11 release Notes

如果您更新到最新的JUnit jar。编译器错误应该消失。 Eclipse可能正在使用自己的内置版本,它具有最新的方法。