Я получаю эту ошибку при запуске теста JUnit в Eclipse:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
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)
Я пробовал добавить JUnit
библиотеку в путь к классам, хотя я использую maven, а библиотека JUnit находится в зависимости от POM.
Я уже пробовал очистить проект и создал новый тестовый пример JUnit, используя плагин JUnit для Eclipse, но по-прежнему получаю ту же ошибку.
mvn clean test
только он скомпилирует все тестовые классыОтветы:
Похоже, это происходит потому, что при использовании компилируется только исходный код
mvn clean compile
(я использую maven 3.1.0, поэтому я не уверен, всегда ли он так себя вел).Если вы запустите
mvn test
, тестовый код также будет скомпилирован, но затем он запустит тесты (что может быть нежелательно сразу, если вы пытаетесь запустить их через Eclipse). Способ обойти это - добавлятьtest-compile
в вашу последовательность команд Maven всякий раз, когда вы делаетеmvn clean
. Например, вы бы сбежалиmvn clean compile test-compile
.источник
У меня была аналогичная проблема с моими тестами, и я где-то в Интернете обнаружил, что вам нужно перейти к пути сборки в свойствах вашего проекта и переместить зависимости Maven выше системной библиотеки JRE . Похоже, у меня это сработало.
источник
Я столкнулся с той же проблемой, и я смог исправить ее с помощью ответа @ slomek, но после этого проблема возникла снова.
Наконец, я исправил это, добавив папку вывода моего проекта в конфигурацию запуска теста JUnit. Шаги:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
вкладкуUser Entries
- даже если проект уже включен в нееAdvanced -> Add folder
чтобы добавить выходную папкуЭта проблема может быть связана со странной настройкой проекта в Eclipse - например, исходная папка с вложенными проектами maven, импортированными как один проект / папка (по крайней мере, так был настроен мой проект).
источник
Если эта проблема возникает только в Eclipse, может помочь выполнение команды Project -> Clean ... для выбранного проекта.
источник
Попробовав все здесь без каких-либо улучшений, я решил свою проблему, просто перезапустив Eclipse.
источник
Я исправил свою проблему, запустив обновление maven. Щелкните правой кнопкой мыши проект вашего проекта> Maven> Обновить проект
источник
В моем случае у меня была неправильная структура каталогов maven.
Что должно быть примерно так:
/ SRC / тест / Java / com.myproject.server.MyTest
После того, как я это исправил - все заработало как шарм.
источник
В моем случае решить эту проблему помогли только следующие шаги:
источник
Раньше в этом случае я всегда делал mvn
eclipse:eclipse
и перезапускал Eclipse, и это работало. После перехода на GIT он у меня перестал работать, что несколько странно.Основная проблема здесь в том, что Mr Eclipse не находит скомпилированный класс. Затем я устанавливаю папку вывода как Project / target / test-classes, которая по умолчанию создается
mvn clean install
без пропуска теста, и перешел к следующему обходному пути:Вариант 1. Задайте путь к классам для каждого тестового примера
Eclipse -> Run -> Run Configurations -> под JUnit-> выберите mytest -> на вкладке classpath-> Select User Entries-> Advanced-> Add Folder -> Select -> Apply-> Run
Вариант 2. Создайте переменную пути к классам и включите ее в путь к классам для всех тестовых случаев.
Eclipse -> Windows -> Переменные пути к классам -> Создать -> [Имя: Junit_test_cases_cp | путь:] -> ok Затем перейдите в Eclipse-> Run -> Run Configurations -> JUnit-> выберите mytest -> на вкладке classpath -> Select User Entries-> Advanced-> Add classpath variables-> Select Junit_test_cases_cp-> ok- > Применить-> Выполнить
Это единственное, что у меня сейчас работает после того, как я попробовал все предложения в Интернете.
источник
У меня была такая же проблема с проектом Gradle с тестовым SourceSet с двумя каталогами ресурсов.
Этот фрагмент взят из main-module.gradle и добавляет каталог ресурсов в тестовый SourceSet:
При этом у меня было два каталога ресурсов, связанных с тестовым SourceSet главного модуля проекта:
../other-module/src/test/resources src / test / resources (относительно папки основного модуля, автоматически добавляемой плагином java)
Я обнаружил, что если у меня было два файла с одинаковыми именами в обоих исходных каталогах, что-то на этапе ресурсов процесса пошло не так. В результате компиляция не началась, и по этой причине никакие .class не были скопированы в каталог bin, где JUnit искал классы. Исключение ClassNotFoundException исчезло после переименования одного из двух файлов.
источник
NoClassDefFoundError на самом деле означает, что он не может инициализировать класс. Нет ничего общего с поиском класса. Я получил эту ошибку при вызове trim () для нулевой строки.
JUnit не отображает исключение NullPointerException. Строка не является нулевой при нормальной работе, потому что я беру строку из файла свойств, который недоступен для тестов.
Мой совет - убирать предметы из класса, пока ваши тесты не начнут сдавать.Затем вы можете определить, какая строка выдает ошибку.
источник
У меня была аналогичная проблема с моим Eclipse Helios, который отлаживает Junits. Моя проблема была немного другой, так как я смог успешно запустить Junits, но когда я получал ClassNotFoundException при отладке тех же JUNIT.
Я пробовал всевозможные решения, доступные на Stackoverflow.com и форумах в других местах, но, похоже, ничего не работает. После того, как я бился головой об этой проблеме почти два дня, я, наконец, нашел решение.
Если ни одно из решений не работает, просто удалите папку .metadata, созданную в вашей рабочей области. Это создало бы дополнительные накладные расходы на импорт проектов и всех видов конфигурации, которые вы сделали, но это, несомненно, решит эту проблему.
Надеюсь, это поможет.
источник
Эти шаги сработали для меня.
источник
1- mvn eclipse: затмение
2- проект очистить все проекты
3- перезапуск
источник
В качестве еще одного ответа стоит упомянуть, что если вы используете eGit и ваш путь к классам обновляется из-за, скажем, инструмента тестового покрытия, такого как Clover, иногда возникает сбой при очистке, который не полностью удаляет содержимое
/path/to/git/repository/<project name>/bin/
По сути, я использовал представление журнала ошибок Eclipse, определил, что вызывало проблемы во время этой очистки, перешел в исходный каталог и вручную удалил
<project name>/bin
каталог. Когда это закончилось, я вернулся в Eclipse и обновил (F5
) свой проект, и ошибка исчезла.источник
Убедитесь, что ваш проект открыт как проект Maven, а не как обычный проект Java. На самом деле это и ежу понятно, но по этой же причине вы можете его пропустить.
источник
Это также может быть связано с тем, что «[ОШИБКА] В этой среде нет компилятора. Возможно, вы работаете на JRE, а не на JDK?»
источник
Я столкнулся с той же проблемой. Я решил это, удалив внешнюю зависимость JUnit jar, которую я добавил путем загрузки из Интернета извне. Но затем я пошел в проект-> свойства-> путь сборки-> добавить библиотеку-> junit-> выбрал версию (ex junit4) -> применить.
Он автоматически добавил зависимость. это решило мою проблему.
источник
Внесение фиктивных изменений и сохранение тестового класса может решить проблему. Он автоматически построит .class
источник
Кажется проблема компиляции. Запустите проект как тест Maven, затем запустите как тест JUnit.
источник
Для проекта, который не использует maven: это сработало для меня https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Добавление jre и src проекта внизу в порядке и экспорт в путь сборки
источник
Пожалуйста, проверьте, добавили ли вы junit4 в качестве зависимости.
например
источник
Может быть вы забыли поместить главный класс и тестовый класс Case в / SRC / тест / Java. Проверьте это один раз.
источник