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

JUnit-java.lang.NoClassDefFoundError:org/hamcrest/selfdescription,junit,junit4,hamcrest,Junit,Junit4,Hamcrest,我正在使用Win7,并从下载了JUnit4.13和hamcrest 2.1 并将它们放在C下名为JUnit的文件夹中 我添加了变量:JUNIT\u 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; 随后,

我正在使用Win7,并从下载了JUnit4.13和hamcrest 2.1

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

我添加了变量:JUNIT\u 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;
随后,, 我将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

请注意,我已经检查过类似的帖子,但它们没有帮助。您能帮忙吗?

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


根据上述说明,假设您已将JAR下载到与项目相同的软件包中:

创建一个新文件夹junit示例并下载当前 junit-4.XX.jar从junit的发布页面下载到这个文件夹

如果您决定单独放置JAR,可能需要相应地更正命令行,以便从
%JUNIT\u HOME%
获取这些JAR文件:

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

谢谢我将jar文件从C:\JUnit复制到我的练习文件夹C:\Prac,并运行了您建议的命令。它仍然给我错误。我假设,既然我已经设置了类路径,那么我就不必在C:\Prac下包含jar文件夹。但不管怎么说,它还是会出错。今天我有更多的时间在本地玩。我能够复制它,并找到了问题的根本原因——错误的hamcrest罐子。我已经更新了上面的帖子。