junit org/hamcrest/Matchers 上的 NoClassDefFoundError

NoClassDefFoundError on org/hamcrest/Matchers on junit

我在 junit-dep jar 之上安装了 hamcrest-all-1.3,但当我 运行 使用 ant 时仍然出现此异常。然而,Eclipse 足够智能,可以解决这个冲突并且测试有效。我的类路径上没有 mockito,但是,确实有 jmockit 和 easymock,我相信这不是这里的问题。这是断言:

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
/* ...
...
... */


 assertThat(10, lessThanOrEqualTo(20));

例外是

[junit] org/hamcrest/Matchers

[junit] java.lang.NoClassDefFoundError: org/hamcrest/Matchers

解决此类问题的一种方法:在 eclipse 中,将光标放在 "assertThat" 上并按 F3。

这会将您带到相应 class/method 后面的来源。可能你最终得到一个空的 window,告诉你:

Class 文件编辑器

找不到来源

然后告诉你实际上要找到assertThat的JAR文件的名称;在我的例子中是 junit-4.11.jar.

长话短说:检查您的构建设置是否包含 JUnit jar。

如 Stefan 所述,您需要两个 hamcrest 罐子才能解决此问题。 junit-4.12.jar、hamcrest-core-1.3.jar 和 hamcrest-library-1.3.jar