При попытке запустить JUnit-Test из Eclipse я получаю исключение ClassNotFoundException. При запуске "mvn test" с консоли - все работает нормально. Кроме того, в Eclipse нет сообщений о проблемах.
Моя структура проекта следующая:
- родительский проект (пом-упаковка)
- Веб-проект (военная упаковка - мой JUnit-тест здесь)
- Гибкий проект
- Проект конфигурации
edit: Как не найти класс? Это простое приложение HelloWorld без специальных библиотек.
Вот моя конфигурация запуска JUnit: альтернативный текст http://www.walkner.biz/_temp/runconfig.png
Testclass (но, как я уже сказал, он не работает и с простым HelloWorld ...):
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import biz.prognoserechnung.domain.User;
import biz.prognoserechnung.domain.UserRepository;
import biz.prognoserechnung.domain.hibernate.UserHibernateDao;
public class UserDaoTest {
/**
* the applicationcontext.
*/
private ApplicationContext ctx = null;
/**
* the user itself.
*/
private User record = null;
/**
* Interface for the user.
*/
private UserRepository dao = null;
@Before
public void setUp() throws Exception {
String[] paths = { "WEB-INF/applicationContext.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
dao = (UserHibernateDao) ctx.getBean("userRepository");
}
@After
public void tearDown() throws Exception {
dao = null;
}
@Test
public final void testIsUser() throws Exception {
Assert.assertTrue(dao.isUser("John", "Doe"));
}
@Test
public final void testIsNoUser() throws Exception {
Assert.assertFalse(dao.isUser("not", "existing"));
Assert.assertFalse(dao.isUser(null, null));
Assert.assertFalse(dao.isUser("", ""));
}
}
Ответы:
Я сталкивался с этой ситуацией несколько раз и после множества попыток нашел решение.
Проверьте путь сборки проекта и включите определенные папки вывода для каждой папки. Пройдите один за другим через каждую исходную папку вашего проекта и установите выходную папку, которую будет использовать maven.
Например, ваш веб-проект
src/main/java
должен находиться вtarget/classes
рамках веб-проекта, тестовые классы также должны находиться вtarget/test-classes
рамках веб-проекта и т.д.Использование этой конфигурации позволит вам выполнять модульные тесты в eclipse.
Еще один совет: если для тестов вашего веб-проекта требуются некоторые файлы конфигурации, которые находятся в ресурсах, обязательно включите эту папку в качестве исходной папки и выполните правильную конфигурацию пути сборки.
Надеюсь, поможет.
источник
@Ignore
повсюду и горячих клавиш!Подход Карлоса помог! Eclipse - java.lang.ClassNotFoundException
Попробуйте проверить путь к классам конфигурации запуска junit:
работает для меня.
источник
ваш путь к классам сборки правильный, поэтому вы можете скомпилировать. необходимо проверить путь к классам вашего JUnit. перейдите в меню «Выполнить» и выберите «Открыть диалоговое окно запуска». там вы должны увидеть дерево слева с JUnit в качестве опции. откройте этот узел и найдите и выберите свой тест. на правой панели вы увидите вкладку для пути к классам. убедитесь, что ваш класс, который тест пытается создать, будет найден.
редактировать:
похоже, это проблема с maven и его поведением после того, как выпуск изменил папки вывода Eclipse по умолчанию. я видел решения, описанные где
mvn clean test
делает свое дело илис первыми тремя, были сообщения о повторении проблемы. мне больше всего подходит последний, но если он не работает, попробуйте другие.
вот и вот некоторая информация
источник
Возможно, проблема заключается в отсутствии файла класса в папке сборки. Одно из решений - очистить проект и перестроить его.
источник
Включение [х] Использовать временный файл JAR , чтобы указать путь к классам (для ограничения длины избежать CLASSPATH) , внутри вкладки Classpath в конфигурации Run сделал трюк для меня.
Если ваш проект огромен и у вас много зависимостей от других родственных проектов и зависимостей maven, вы можете столкнуться с ограничениями длины пути к классам, и это, кажется, единственное решение (помимо того, что каталог для вашего локального репозитория maven короче (наш уже запускается при ц: / м2)
источник
Здесь есть много замысловатых предложений.
Я несколько раз сталкивался с этой проблемой с проектами Maven после перемещения ресурсов путем перетаскивания или выполнения рефакторинга имен классов.
Если это произойдет, просто скопируйте (не перемещайте) проблемный Test Case (
.java
) через терминал / обозреватель файлов в другое местоright-click -> Delete
в Eclipse и выберите удаление на диске при наличии соответствующей опции, переместите / скопируйте скопированный файл в исходное расположение файла, затем выберите свой проект в Eclipse и нажмите F5, чтобы обновить ресурсы.Это быстро и легко сделать, и каждый раз проблема решалась для меня навсегда.
источник
У меня была точно такая же проблема, но я ее понял! Перейдите в файл проекта и щелкните его правой кнопкой мыши, затем щелкните
Refresh
или нажмите F5. Тогда попробуйте запустить его. Если это все еще не работает, просто забудьте об этом, так как у меня была ТОЧНАЯ такая же проблема, и это просто означает, что ваша версия Eclipse - мусор.источник
Это было моим решением проблемы. Конечно, это может произойти по многим причинам. Для меня это было то, что Maven2 (не плагин для Eclipse) настраивал профиль eclipse для использования другого конструктора (aspectJ), но у меня не было плагина в eclipse./
http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html
Ура, Рамон Бакленд
источник
Право Сачина: даже с правильным путем к классам вкладка проблем покажет, что у некоторой зависимости или ресурса / проекта есть ошибка, которую необходимо исправить, чтобы maven автоматически создавал и создавал классы, когда вы создаете или вносите изменения в свой тестовый класс .
"Здравствуй,
Это очень старый июль (в каком году), но у меня была такая же проблема.
Фактическая проблема обнаружила, что eclipse не смог сгенерировать файл класса для файла java, путь к классам был правильным.
Перейдите на вкладку с проблемами и проверьте, не хватает ли в вашем проекте чего-либо / файла. вы можете создать новый проект и добавлять файлы один за другим и строить их, пока он не перестанет компилировать и создавать классы (проверьте папку workspace / proj / bin / package / для классов)
Как ни странно, но правда, ecplise не соответствовал требованиям, потому что 4 из 20 файлов java использовали одно изображение, которое отсутствовало. и в результате ни один из java-файлов не был скомпилирован.
CLASSPATH здесь не проблема ".
источник
У нас было точное исключение (с использованием SpringSource Tools, tomcat, в Win7), и причина заключалась в том, что мы реорганизовали имя файла (переименовали файл) с SubDomain.java на Subdomain.java (D vs d), и каким-то образом оно столкнулось, хотя SpringSource был показывая новое имя Subdomain.java. Решением было удалить файл (через SpringSource) и снова создать его под именем Subdomain.java и скопировать его прежнее содержимое. Просто как тот.
источник
Я решаю этот путь Bulit ---> библиотеки ---> добавить библиотеку ---> Junit check junit4
источник
нажмите
project->properties->Java build path->Source
и проверьте, что каждаяsrc
папка все еще существует или недавно удалена. Исправьте любой отсутствующий или неправильный путь, перестройте и запустите тест. Это решит проблему.источник
Все, что я сделал, это Свойства -> Путь сборки Java -> Порядок и экспорт -> Включил все снятые флажки -> полностью переместил Junit вверх.
источник
Пытался
работал после
Maven 2 LifeCycle >> тест
источник
Я пробовал все решения на этой странице: обновить проект, перестроить, все проекты очистить, перезапустить Eclipse, повторно импортировать (даже) проекты, перестроить maven и обновить. Ничего не получилось. Что действительно работало, так это копирование класса под новое имя, которое работает нормально - странно, но факт.
Потерпев некоторое время, я просто исправил это:
Run
менюRun Configurations
Run Configuration
списка путем нажатия кнопки «Удалить» или красного значка X.Что-то, должно быть, напортачило с кэшированной конфигурацией запуска.
источник
Удаление проекта из eclipse (не с жесткого диска), которое в некотором роде очищает рабочую область и повторно импортирует проект в eclipse, снова сработало для меня.
источник
Обычно эта проблема возникает при запуске
java
инструмента Java-приложения, который не может найти файл класса.В основном в проекте maven мы видим эту проблему из -за проблемы с синхронизацией Eclipse-Maven . Чтобы решить эту проблему: Maven-> Обновить конфигурацию
источник
Пробовали ли вы щелкнуть правой кнопкой мыши корень проекта, выбрать «Свойства» и убедиться, что CLASSPATH верен? Если я правильно помню, вот как вы это делаете.
Что-нибудь о том, как Eclipse выполняет модульные тесты, требующие особого добавления junit JAR в среду выполнения CLASSPATH?
Я использую IntelliJ, поэтому у меня нет этих проблем.
Я бы сам посмотрел Eclipse, но предпочитаю, чтобы он не был на моем рабочем столе.
источник
Хм, выглядит немного странно, попробуйте запустить его со следующей аннотацией в верхней части класса:
и дайте мне знать, как вы с этим справляетесь.
Убедитесь, что у вас также включена автоматическая сборка. Если вы хотите убедиться, что ваши тестовые классы компилируются правильно, очистите целевую папку Maven (и любую папку bin, которую может использовать Eclipse). Вы тоже используете m2eclipse, я нахожу это немного проблематичным.
источник
Решение моей проблемы было аналогичным: библиотеки были недействительными. Если вы посмотрите файл .classpath проекта, вы увидите теги classpathentry с ключом / значением kind = "lib". Некоторые из моих были неправильными.
Я не обнаружил этого, пока не отключил настройки проверки. То есть в файлах JSP и т. Д. Было так много ошибок, что ошибки пути к классам не были очевидны (или, возможно, даже не обнаруживались). В результате в конечные выходные папки ничего не компилировалось, но никаких полезных ошибок о причинах не было.
источник
Укажите, чтобы исправить JDK, выбрав Windows> Настройки> Java> Установленная JRE.
Не указывайте на jre, указывайте на правильный JDK. Я указал на JDK 1.6U29 и обновил проект.
В дальнейшем проблема исчезнет, и тесты jUnit работают нормально.
Спасибо,
-Tapas
источник
Недавно я столкнулся с той же ошибкой в Eclipse, т. Е. Eclipse IDE не смогла найти класс Unit test независимо от того, как я меняю конфигурации. Изучая предыдущие сообщения здесь и на других веб-сайтах, я дважды и трижды проверил путь к классам и исходную информацию, а также перемещался вверх и вниз по исходной папке и библиотекам как в «Конфигурации запуска», так и в «Пути сборки Java». "config, и я также очистил проект и перестроил его, но ни один из приемов у меня не работает. Конкретный проект Java - это старый проект, скомпилированный в ANT, и в библиотеку Eclipse включено множество jar-файлов.
Затем я изменил класс модульного теста, добавив метод main (), и щелкнул его правой кнопкой мыши на «Запуск от имени» Java-приложения вместо теста JUnit, и внезапно Eclipse, кажется, просыпается и правильно идентифицировал класс. После этого я снова переключил его на приложение для модульного тестирования, и оно все еще работает.
Кажется, это ошибка в Eclipse, я предполагаю, что большое количество библиотек (> 260) может запутать способность JVM найти мой класс JUnit.
источник
Меня тоже поразила эта проблема, и я смог найти подходящее решение для своего случая. Если ваш проект Eclipse имеет файл .classpath в корне вашего проекта (смотрите его в представлении Navigator вместо представления Package Explorer), убедитесь, что ваш Maven classpathentry появляется до вашего JRE Container classpathentry.
Если в вашем проекте нет файла .classpath, вы можете отредактировать путь сборки Java вашего проекта, чтобы переключить порядок и экспорт. Если в вашем проекте есть файл .classpath, и вы измените порядок только в пути сборки Java, вы увидите, что это не повлияет на порядок, и проблема будет продолжаться.
И проект-> очистка никогда не повредит вещам после того, как вы внесете изменения.
источник
Убедитесь, что ваша конфигурация запуска теста НЕ содержит следующих строк, ИЛИ попробуйте включить автоматическое управление зависимостями Maven.
источник
Я перепробовал все, что читал в этом длинном посте, и, что невероятно, у меня сработало, вместо того, чтобы щелкнуть тестовый класс и выбрать
Run as JUnit test
, щелкнуть метод теста и запустить его от имениJUnit test
. Я не имею понятия почему?источник
Тест JUnit изнутри eclipse дал мне также NoClassDefFoundError. Выполнение «mvn clean test» из командной строки дало мне следующую ошибку в нескольких банках: неверный заголовок LOC (плохая подпись) Удаление этих банок из локального репозитория m2 и запуск «mvn clean test» снова решило мою проблему.
источник
У меня такая же проблема. Все, что я сделал, было,
я). Сгенерированные артефакты Затмения
mvn clean eclipse:eclipse
II). Обновите проект и повторно запустите тест junit. Должно работать нормально.
источник
Кроме того, ДВОЙНОЙ ПРОВЕРЬТЕ диалоговое окно eclipse «Сборка веб-развертывания».
Его можно найти: Свойства проекта-> Сборка развертывания.
Недавно у меня был плагин eclipse для модификации одного из моих веб-проектов, и он добавил ~ таинственным образом ~ добавил тестовые каталоги maven / src / test / java, / src / test / resources в сборку развертывания. УГГГ !!!
Вот почему мой проект работал нормально, когда я построил и развернул просто maven в tomcat, без ClassNotFoundExceptions ... Однако, когда я выполнил развертывание через Eclipse, Whammo !! Я начинаю получать ClassNotFoundExceptions, потому что TestCode развертывается.
Эрик
источник
Это означает, что в вашем pom.xml есть нерешенные проблемы. Откройте вид проблем и решите соответственно. Тогда вы сможете успешно запустить тестовые примеры, не столкнувшись с classnotfoundexception.
источник
Изменение порядка артефактов пути к классам в пути сборки Java решило эту проблему.
Это должно исправить.
источник