ClassNotFoundException при запуске модульных тестов JUnit в Eclipse (с использованием Maven)

Я только что обновил свой SpringSource Tools Suite (STS, вариант IDE Eclipse) до последней версии (v3.6.1). Тогда все мои модульные тесты JUnit не могут быть запущены снова. Я получаю эту ошибку:

Class not found ClassToTest
java.lang.ClassNotFoundException: ClassToTest
    at java.net.URLClassLoader.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:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)

согласно этому блогу: ClassNotFoundException при запуске модульных тестов JUnit в Eclipse (с использованием Maven), это из-за некоторой неправильной конфигурации плагина Maven в Eclipse. Однако в STS 3.6.2 я не могу найти эту опцию "включить модули" в Maven плагин. Как исправить эту проблему и повторно включить модульные тесты?

6 ответов


на текущем плагине m2e все еще есть некоторые обратные ничьи. Unit-test-cases не могут быть запущены как их включая проект, сгруппированный в рабочий набор. Может помочь следующее:

  1. щелкните правой кнопкой мыши на проекте, включая junit-тесты.
  2. выберите Maven - > Отключить Разрешение Рабочей Области

попробуйте снова запустить тест.


хорошо, кажется, мне придется ответить на этот вопрос самостоятельно.

основной причиной этой проблемы по-прежнему является плагин m2eclipse eclipse. Новая версия этого плагина не поддерживает вложенные модули в одном проекте. Если нам действительно нужно увидеть несколько модулей, мы должны удалить старый из проводника пакетов и создать рабочий набор и импортировать проект снова, используя опцию "импорт существующих проектов maven". Мастер импорта eclipse откроет окно и спросит вас какой модуль необходимо импортировать. Затем мы можем выбрать все модули и завершить импорт. В результате рабочий набор будет содержать все модули вашего проекта и рассматривать каждый модуль как отдельный проект, хотя в рабочей области ваши модули все еще находятся в одном проекте. Делая это, он решает все проблемы, с которыми я столкнулся в Eclipse, связанные с classpath, такие как невозможность поиска класса или невозможность запуска модульных тестов и получения Ява.ленг.ClassNotFoundException.

Для справки, вот статья научит вас, как создать рабочий набор: рабочий набор

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

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


Я думаю, я нашел решение, по крайней мере, это сработало для меня: щелкните правой кнопкой мыши проект и выберите "Maven" - > "обновить зависимости"

затем, когда я попытался, я не получил ClassNotFoundException .


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

  1. измените выходную папку для тестовых классов.
  2. создайте пользовательский конструктор для проекта, который будет запускать тестовую компиляцию из Maven.
  3. переместите зависимости Maven выше в списке порядок и экспорт в пути сборки проекта.

было много, много больше, но тот, который я нашел для работы, был следующим:

  1. закройте среду разработки.
  2. удалите банки, используемые проектом, из моего локального репозитория Maven.
  3. откройте IDE.
  4. построить проект.
  5. выполнить проверку.

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


мы тоже столкнулись с тем же ClassNotFoundException при попытке запустить тестовый класс JUnit. Но когда мы попытались использовать следующие шаги, он успешно начал работать.

  1. выберите проект.
  2. нажмите на опцию проекта, отображаемую на панели инструментов в Eclipse IDE.
  3. выберите "Очистить".
  4. Теперь попробуйте запустить тестовый файл.

Как обойти, попробовать работает mvn test-compile (либо в Eclipse, либо из командной строки), затем попробуйте запустить тест Junit в Eclipse.