JUnit - java.lang.NoClassDefFoundError : org/hamcrest/SelfDescribing

标签 junit junit4 hamcrest

我正在使用 Win 7 并从以下位置下载了 Junit 4.13 和 hamcrest 2.1 https://github.com/junit-team/junit4/wiki/Download-and-Install

并将它们放在C下一个名为JUnit的文件夹中。

我添加了变量:JUNIT_HOME,值为 C:\JUnit。

我还在类路径中添加了以下内容:

%classpath%;.;C:\Program Files\Java\jre1.8.0_171\bin;%CLASSPATH%; 
%JUNIT_HOME%\junit-4.13-beta-1;.; %JUNIT_HOME%\hamcrest-core-2.1.jar;

正在关注 https://github.com/junit-team/junit4/wiki/Getting-started , 我将 java 文件 Calculator.java 和 CalculatorTest.java 添加到我的练习文件夹中。

命令

javac -cp .;junit-4.13-beta-1.jar;hamcrest-core-2.1.jar CalculatorTest.java

执行成功。但是,命令

java -cp .;junit-4.13-beta-1.jar;hamcrest-core-2.1.jar org.junit.runner.JUnitCore CalculatorTest

失败,给出如下错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: 
org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.junit.runner.Computer.getSuite(Computer.java:28)
    at org.junit.runner.Request.classes(Request.java:77)
    at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitComma
ndLineParseResult.java:116)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 17 more

请注意,我已经检查过类似 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 的帖子, 但他们没有帮助。你能帮忙吗?

最佳答案

正确的 hamcrest jar 是 hamcrest-2.1.jar,而不是 hamcrest-core-2.1.jar。您可以从here下载。 .


根据提到guide假定您已将 jar 下载到与您的项目相同的包中:

Create a new folder junit-example and download the current junit-4.XX.jar from JUnit's release page and Hamcrest to this folder.

如果您决定单独放置 jars 可能需要相应地更正命令行以从 %JUNIT_HOME% 获取这些 jars 文件:

java -cp .;%JUNIT_HOME%\junit-4.13-beta-1.jar;%JUNIT_HOME%\hamcrest-core-2.1.jar org.junit.runner.JUnitCore CalculatorTest

关于JUnit - java.lang.NoClassDefFoundError : org/hamcrest/SelfDescribing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465976/

相关文章:

unit-testing - 通过排序测试集合相等性

junit - Hamcrest - Matchers.hasProperty : how to check if a List of objects contains an object with a concrete value

java - 单元测试 Jersey Restful Services

android - 将 Android 库项目添加到 Eclipse 构建路径?

java - @BeforeClass 和 @AfterClass 在每次测试之前和之后调用

java - 在 Maven 中,如何将 JUnit 测试用例作为测试套件的一部分而不是单独运行?

java - 如何在 Junit 中测试 File.delete() 函数

java - 并行运行 junit 参数化测试(而不是类)

java.lang.NullPointerException 在 org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java :134)

java - 使用assertThat+is 和数据类型short 时出现NoSuchMethodError