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

时间:2019-01-31 17:18:28

标签: junit junit4 hamcrest

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

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

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

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

%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之类的帖子,但它们没有帮助。你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

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


根据提到的guide,假定您已在与项目相同的程序包中下载了jar文件:

  

创建一个新文件夹junit-example并下载当前文件夹   JUnit发布页面中的junit-4.XX.jar,并将Hamcrest移至此文件夹。

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

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