JUnit - java.lang.NoClassDefFoundError: org / hamcrest / SelfDescribing - PullRequest
0 голосов
/ 31 января 2019

Я использую Win 7 и скачал Junit 4.13 и hamcrest 2.1 из https://github.com/junit-team/junit4/wiki/Download-and-Install

и поместил их в папку с именем JUnit в C.

Я добавил переменную: 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, но они не помогли.Не могли бы вы помочь?

1 Ответ

0 голосов
/ 01 февраля 2019

Правильная банка подколенного сухожилия - hamcrest-2.1.jar, а не hamcrest-core-2.1.jar.Вы можете скачать его с здесь .


Согласно упомянутому руководству предполагается, что вы скачали jar в том же пакете, что и ваш проект:

Создайте новую папку junit-example и загрузите текущую версию junit-4.XX.jar со страницы релиза JUnit и Hamcrest в эту папку.

Если вы решили разместить банки отдельновозможно, вам нужно соответственно исправить командную строку, чтобы взять эти файлы jars из %JUNIT_HOME%:

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