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

Я использую Win 7 и скачал Junit 4.13 и hamcrest 2.1 с https://github.com/junit-team/junit4/wiki/Загрузить и установить

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
4 273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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


В соответствии с упомянутым руководство предполагается, что вы загрузили 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.

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

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 и выполнил предложенную вами команду. Это все еще дает мне ошибки. Я предполагал, что, поскольку я установил путь к классам, мне не нужно включать папки jar в C:\Prac. Но все равно выдает ошибки.

Fabiana 01.02.2019 04:47

Сегодня у меня было больше времени, и я поиграл с ним локально. Я смог воспроизвести его и нашел основную причину проблемы - неправильная банка подколенного сухожилия. Я обновил свой пост выше.

Dmytro Maslenko 01.02.2019 20:15

Другие вопросы по теме