2010-11-19 1 views
58

Я получаю эту ошибку в java в своем тестовом коде junit. Я посмотрел в сети, и он говорит, что мне нужно добавить junit.jar в classpath.java.lang.NoClassDefFoundError в junit

В 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

Какой класс отсутствует в соответствии ошибка? – BalusC

ответ

88
  1. правой кнопкой мыши проект в Package Explorer> выберите Свойства
  2. перейти на Java Build Path> Библиотеки Вкладка
  3. нажмите на кнопку «Добавить Library '
  4. выбрать JUnit
  5. нажмите «Далее».

Вы должны быть в состоянии справиться с этим.

+0

Выполнение этого добавляет JUNIT в библиотеку, но теперь он говорит, что junit.org не может быть разрешен. – 2010-11-19 18:18:05

+5

Просто дважды проверьте, что у вас есть библиотека Hamcrest также в пути к классам. Текущая версия JUnit 4 должна быть полностью инклюзивной, но иногда люди разбивают пакеты. –

+1

Большое спасибо .... Решено сейчас .... Я собираюсь отметить это как ответ ... – 2010-11-19 18:21:41

2

Класс org/hamcrest/SelfDescribing не находится в пути класса времени выполнения.

-1

Если у вас несколько версий java, это может помешать работе вашей программы.

Предлагаю вам загрузить JCreator.

Когда вы это сделаете, нажмите «Настройка», «Параметры» и «Профили JDK». Удалите старые версии Java из списка. Затем нажмите кнопку воспроизведения. Ваша программа должна появиться.

Если это не так, нажмите ctrl + alt + O, а затем снова нажмите кнопку воспроизведения.

1

Try следующих шагов:

  1. Перейти к конфигурации запуска вашего проекта. На вкладке Classpath добавьте библиотеку JUnit.
  2. Повторите те же шаги.

Это сработало для меня.

1

Я была такая же проблема, проблема была в @ContextConfiguration во мне тестовых классов, я загружал контекст сервлета тоже я просто изменить:

@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" }) 

к:

@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" }) 

и это оно. таким образом im только загружая все файлы с шаблоном * -context.xml во мне тестовый путь.

11

Та же проблема может возникнуть, если вы загрузили JUnit баночки с сайта JUnit, но забыли скачать Hamcrest банку - (! Инструкции говорят, чтобы загрузить оба, но я пропустил вперед Упс) и требуется

1
  1. Убедитесь, что переменная среды JUNIT_HOME установлена ​​в c: \ JUNIT.
  2. Затем в конфигурации запуска> выберите classpath> добавьте внешние jars-junit-4.11.jar
1

Причина этого - «hamcrest-core» jar не в classpath, поскольку он не приходит непосредственно с junit jar. Таким образом, есть два способа решения этой проблемы:

  1. выберите проект -> buildpath -> добавить библиотеки и выберите JUnit (Он содержит как JUnit & Hamcrest-жильный)
  2. загрузить Hamcrest-ядро от Maven репо и добавить к вашему пути к классам.
0

Эта ошибка также возникает, если в пути к классам присутствует 2 версии библиотеки hamcrest или hamcrest-core.

В файле pom вы можете исключить дополнительную версию и она работает.

8

При использовании в Maven обновите артефакт junit: junit, например. 4.8.2-4.11.

+0

Это исправлено «NoClassDefFoundError: org/junit' ...», вызванное ClassNotFoundException: org.junit.runners.model.InitializationError' для меня. Я использовал Junit 4.8. Переместилось к 4.11. –

0

даже Junit4.11.jar не имеет hamcrest-core.jar. Я добавил явно в путь к классам, и проблема была решена.

13
  1. Затмение -> Главное меню -> Run -> Run Configurations
  2. Удалить все вхождения теста. Ваш тест может отображаться как YourTest.Method_1(). Удалите это также.
  3. Повторно запустить. Пусть Eclipse построит новую конфигурацию.

Добавление: Местно Я создал «Библиотека пользователя», и добавил к моим проектам, имеет

hamcrest-core-1.3.jar

junit-4.12.jar

Смежные вопросы