Тестовый класс JUNIT в Eclipse - java.lang.ClassNotFoundException - PullRequest
54 голосов
/ 19 апреля 2011

Я пытаюсь запустить свой тест junit (чтобы убедиться, что файл свойств загружается правильно), но я получаю ClassNotFoundException, хотя класс есть и все необходимые библиотеки тоже там.я получаю ошибку:

Class not found ConfigurationManagerTest                                                 java.lang.ClassNotFoundException: ConfigurationManagerTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    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)

есть идеи, как это исправить?

Спасибо.

Ответы [ 24 ]

38 голосов
/ 19 апреля 2011

ConfigurationManagerTest не найден на вашем пути к классам.Убедитесь, что файл ConfigurationManagerTest.class доступен на вашем пути к классам.

Он может не существовать, если он не был успешно скомпилирован или если он создается в каталоге, о котором вы не сказали, что проект Eclipse должен находиться в пути к классам.

Предполагая, что вы поместили свои тестовые классы в отдельную папку, убедитесь, что они отображаются в представлении «Package Explorer» (а не в представлении «Navigator»).

В свойствах проекта, «Путь сборки Java» и вкладке «Источник», вы также можете увидеть, включена ли исходная папка для сборки, а также где генерируются файлы .class.

22 голосов
/ 14 марта 2013

Есть еще одна возможность.У меня была такая же проблема только сейчас, и ни одно из решений здесь не помогло.За исключением удаления и воссоздания проекта - я не хотел пробовать это.Что помогло, так это очистить проект два раза сразу один за другим!Очистка + сборка может повторяться любое количество раз - это не поможет.Только чистые + чистые и после этого сборка идет нормально.(Затмение 3.6).Конечно, вы должны отключить автоматическое построение для этого.

Редактировать: Этот пост получил свой последний плюс 15.11.2017.Таким образом, проблема (и решение) остается актуальной.

4 голосов
/ 12 апреля 2012

Другая возможная проблема - отсутствующий компоновщик (это предотвратит сборку вашего файла .class).

Убедитесь, что ваш файл .project имеет следующие строки

<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>
3 голосов
/ 17 апреля 2012

Это случилось со мной, когда я перетаскивал тестовые классы в разные пакеты. Я просто сделал следующее

  1. Сохранение класса в текстовом редакторе.
  2. Удален нарушающий класс из проводника проекта eclipse.
  3. Повторно создал класс.

Бинго! Теперь я могу запустить тест!

2 голосов
/ 17 февраля 2013

У меня была эта проблема, и было довольно сложно понять, что случилось.Проект имел проект зависимости с некоторой ошибкой, которая не позволила выполнить сборку.Когда я удалил эту проблему с зависимостями, проект был построен как ожидалось.

Ps .: Я работаю над проектом, который имеет много ошибок компиляции, потому что мы переносим приложение, которое было преобразовано из Delphi в Java,Вначале я не заботился об ошибке компиляции, поэтому мне потребовалось некоторое время, чтобы выяснить проблему.

2 голосов
/ 12 апреля 2013

Я перепробовал все ответы, описанные здесь, но ни один не работал, но нашел эту ветку , где slomek решает проблему очень простым способом. Просто зайдите в проект -> свойства -> путь сборки Java. Затем переместите Junit к вершине, ударив снизу вверх вправо. Тогда все компилируется просто отлично.

2 голосов
/ 29 мая 2013

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

1 голос
/ 25 декабря 2013

у меня получилось удалить конфигурацию запуска теста. Затем щелкните правой кнопкой мыши тестовый класс и выберите запустить как тестовый запуск.

теперь он воссоздает правильную конфигурацию запуска для меня.

1 голос
/ 17 мая 2013

Я перепробовал все упомянутое здесь и в других постах. Некоторые решения, которые предлагали люди, были:

  1. Изменить папку вывода для теста
  2. Создание собственного компоновщика для проекта, который будет запускать тест-компиляцию из Maven
  3. Переместите зависимости Maven выше в списке «Порядок и экспорт» в пути сборки проекта

Их было много-много, но я обнаружил, что работал следующим образом: закройте среду разработки. Удалите банки, используемые проектом, из моего локального репозитория Maven. Откройте IDE. Постройте проект. Запустите тест.

После нескольких часов стука моей головы по клавиатуре и следуя предложенным решениям, это сработало!

1 голос
/ 16 сентября 2015

Другой способ, которым это может раскрыться, и только что сделал для меня, - это если у вас есть ошибка сборки, о которой Eclipse не сообщает вам. Если компиляция модульного теста завершится неудачно, то файла .class не будет, и вы получите ClassNotFoundException.

В моем случае отсутствовал файл jar третьей стороны. Когда я запустил тест, у меня появилось всплывающее окно с надписью «В необходимых проектах есть ошибки». Я работаю с огромным проектом, и я всегда получаю это сообщение, потому что часть источника недоступна для затмения (длинная история). Также это не говорит, что ошибки. Поэтому я нажимаю «Продолжить» и получаю исключение.

Как только я понял, что происходит, это было легко исправить, добавив отсутствующий jar в путь к классам в Run -> Debug Configurations ...

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

...