Я получаю эту ошибку в 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
java
eclipse
junit
noclassdeffounderror
Крис Деннетт
источник
источник
Ответы:
источник
Приложение: я создал «Пользовательскую библиотеку» и добавил к своим проектам, в которых
источник
Та же проблема может возникнуть, если вы загрузили банку JUnit с веб-сайта JUnit, но забыли загрузить банку Hamcrest - требуются оба (инструкции говорят, что нужно загрузить оба, но я пропустил вперед! Ой)
источник
При использовании в Maven обновите артефакт junit: junit, например, с 4.8.2 до 4.11.
источник
NoClassDefFoundError: org/junit
...caused by ClassNotFoundException: org.junit.runners.model.InitializationError
для меня. Я использовал Junit 4.8. Переход на 4.11 сработал.В Eclipse я смог решить указанную выше проблему, выполнив следующие шаги:
Щелкните правой кнопкой мыши тестовый файл, который вы хотите запустить, выберите Run As -> Run Configurations -> Select Classpath tab -> Select to the bootstrap Entries -> Select Advanced -> Select Add library -> Select JUnit -> Next -> Выберите JUnit4 из раскрывающегося списка -> Готово
Затем выберите Применить -> Выполнить
источник
Класс org / hamcrest / SelfDescribing отсутствует в пути к классам времени выполнения.
источник
Эти шаги сработали для меня, когда ошибка показала, что класс фильтра отсутствует (как сообщается в этом ложном вопросе: JUnit: NoClassDefFoundError: org / junit / runner / манипуляция / фильтр ):
Благодаря этим ответам за подсказку для этого решения: https://stackoverflow.com/a/34067333/5538923 и https://stackoverflow.com/a/39987979/5538923 ).
источник
Попробуйте следующие шаги:
У меня это сработало.
источник
У меня была такая же проблема, проблема была в @ContextConfiguration во мне тестовых классах, я тоже загружал контекст сервлета, я просто меняю:
@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })
кому:
@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })
вот и все. таким образом я загружаю только все файлы с шаблоном * -context.xml в свой тестовый путь.
источник
источник
Причина этого в том, что jar-файл "hamcrest-core" не находится в пути к классам, так как он не поставляется напрямую с jar-файлом junit. Итак, есть два способа решить эту проблему:
источник
Добавляю свои два цента к другим ответам.
Проверьте, не создали ли вы случайно свой тестовый класс
src/main/java
вместо обычногоsrc/test/java
. Первое используется по умолчанию в Eclipse, когда вы создаете новый тестовый класс по какой-либо причине, и на него можно не обращать внимания. Это может быть так просто.источник
В моем случае я добавил свои библиотеки в Modulepath вместо Classpath.
Это работает, только если JUnit правильно добавлен в Classpath.
источник
Эта ошибка также возникает, если в пути к классам присутствуют 2 версии hamcrest-library или hamcrest-core.
В файле pom вы можете исключить лишнюю версию, и она работает.
источник
даже в Junit4.11.jar нет файла hamcrest-core.jar. Я явно добавил в путь к классам, и проблема была решена.
источник
Я следил за этим видео: https://www.youtube.com/watch?v=WHPPQGOyy_Y, но не смог запустить тест. После этого я удалил все загруженные файлы и добавил Junit, как показано на рисунке.
источник
Если у вас более одной версии java, это может мешать работе вашей программы.
Предлагаю вам скачать JCreator.
Когда вы это сделаете, нажмите «Настройка», «Параметры» и «Профили JDK». Удалите старые версии Java из списка. Затем нажмите кнопку воспроизведения. Ваша программа должна появиться.
Если этого не произошло, нажмите ctrl + alt + O, а затем снова нажмите кнопку воспроизведения.
источник