Я получаю эту ошибку в java в моем тестовом коде junit. Я посмотрел в сети, и он говорит, что мне нужно добавить junit.jar в путь к классам.
В Eclipse я добавил его в путь к классам окна "Свойства проекта", но я все еще получаю ошибку инициализации. Что мне делать??
Это полный след ошибки:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
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$000(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.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
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)
... 25 more
Ответ 1
- Щелкните правой кнопкой мыши свой проект в Package Explorer> щелкните Свойства
- перейдите на вкладку "Путь сборки Java"> вкладка "Библиотеки"
- нажмите кнопку "Добавить библиотеку"
- выберите JUnit
- нажмите Далее.
- выберите в выпадающем меню JUnit4 или другие новые версии.
- нажмите Готово.
- Тогда хорошо.
Ответ 2
- Eclipse → Главное меню → Выполнить → Запустить конфигурации
- Удалите все вхождения теста. Ваш тест может отображаться как YourTest.Method_1(). Удалите это также.
- Повторно запустить. Пусть Eclipse построит новую конфигурацию.
Добавление: Локально я создал "Пользовательскую библиотеку" и добавил к моим проектам, у которых
hamcrest-core-1.3.jar
junit-4.12.jar
Ответ 3
Такая же проблема может возникнуть, если вы загрузили JUnit jar с веб-сайта JUnit, но забыли загрузить банку Hamcrest - оба они требуются (инструкции говорят, чтобы загрузить оба, но я пропустил вперед!).
Ответ 4
При использовании в Maven обновите артефакт junit: junit, например. 4.8.2-4.11.
Ответ 5
В Eclipse мне удалось решить вышеуказанную проблему, выполнив следующие действия:
Щелкните правой кнопкой мыши на тестовом файле, который вы хотите запустить,
Выберите "Выполнить как" → "Выполнить конфигурации" → "Выбрать вкладку" Путь к классам "-> Выбрать записи начальной загрузки" → "Выбрать расширенную" → "Выбрать" - "Выбрать" → "Выбрать JUnit" → "Далее" → "Выбрать JUnit4" из раскрывающегося списка → "Готово"
Затем выберите Применить → Выполнить
Ответ 6
Класс org/hamcrest/SelfDescribing не находится в пути пути выполнения.
Ответ 7
Попробуйте выполнить следующие шаги:
- Перейдите в конфигурацию запуска проекта. На вкладке Classpath добавьте библиотеку JUnit.
- Повторите те же действия.
Это сработало для меня.
Ответ 8
У меня была такая же проблема, проблема была в @ContextConfiguration во мне тестовых классах, я также загружал контекст сервлета, просто меняя:
@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })
в
@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })
и все.
таким образом, im только загружает все файлы с шаблоном * -context.xml во мне тестовый путь.
Ответ 9
- Убедитесь, что переменная среды JUNIT_HOME установлена в c:\JUNIT.
- Затем в конфигурации запускa > выберите classpath > добавить внешние jars-junit-4.11.jar
Ответ 10
Причиной этого является "hamcrest-core" jar не в classpath, поскольку он не приходит непосредственно с junit jar. Таким образом, есть два способа решить эту проблему:
- выберите проект → buildpath → добавьте библиотеки и выберите junit (он содержит как junit, так и hamcrest-core)
- загрузите hamcrest-core из maven repo и добавьте это в свой путь к классам.
Ответ 11
Эти шаги спомогли мне, когда ошибка показала, что класс Filter отсутствует (как сообщается в этом ложно заданном вопросе: JUnit: NoClassDefFoundError: org/junit/runner/манипуляция /Filter):
- Убедитесь, что JUnit 4 упоминается только один раз в вашем проекте (я также удалил природу Maven, но я не уверен, что этот шаг влияет на решение
проблема).
- Щелкните правой кнопкой мыши файл, содержащий юнит-тесты, выберите
Свойства и в настройках Run/Debug удалите все записи
из Конфигурации запуска для этого файла. Нажмите Применить и закройте.
- Щелкните правой кнопкой мыши проект, содержащий юнит-тесты, выберите
Свойства и в настройках Run/Debug удалите все записи
с участием JUnit из конфигураций запуска. Нажмите Применить и закройте.
- Очистите проект и запустите тест.
Спасибо за ответы на эти вопросы: fooobar.com/questions/714308/... и fooobar.com/questions/95430/...).
Ответ 12
Добавление двух моих центов к другим ответам.
Проверьте, не случайно ли вы создали свой тестовый класс под src/main/java
вместо обычного src/test/java
. Первый используется по умолчанию в Eclipse, когда вы по какой-либо причине создаете новый тестовый класс, и его можно не заметить. Это может быть так просто.
Ответ 13
Эта ошибка также возникает, если в пути к классам присутствует 2 версии hamcrest-library или hamcrest-core.
В файле pom вы можете исключить дополнительную версию и она работает.
Ответ 14
даже Junit4.11.jar не имеет hamcrest-core.jar. Я добавил явно в путь к классам, и проблема была решена.
Ответ 15
Если у вас несколько версий java, это может помешать вашей программе.
Я предлагаю вам загрузить JCreator.
Когда вы это сделаете, нажмите "Настройка", "Параметры" и "Профили JDK". Удалите старые версии Java из списка. Затем нажмите кнопку воспроизведения. Ваша программа должна появиться.
Если это не так, нажмите ctrl + alt + O, а затем снова нажмите кнопку воспроизведения.