Eclipse - java.lang.ClassNotFoundException - PullRequest
93 голосов
/ 27 июня 2009

При попытке запустить мой JUnit-тест из Eclipse я получаю "ClassNotFoundException". При запуске "mvn test" из консоли - все работает нормально. Также в Eclipse не сообщается о проблемах.

Структура моего проекта следующая:

  • родительский проект (пом-упаковка)
    • Веб-проект (war-package - мой 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("", ""));
    }
}

Ответы [ 35 ]

0 голосов
/ 21 июля 2015

Изменение порядка артефактов classpath в Java Build Path решило это для меня.

  1. Щелкните правой кнопкой мыши по проекту и перейдите к пути сборки проекта.
  2. Перейдите на вкладку «Порядок и экспорт» и переместите системную библиотеку JRE в список источников.

Это должно исправить.

0 голосов
/ 17 февраля 2015

Это означает, что в вашем pom.xml есть нерешенные проблемы. Откройте окно проблем решить соответственно. После этого вы сможете успешно выполнить тестовые сценарии, не встретив исключение classnotfoundexception.

0 голосов
/ 20 октября 2014

Кроме того, дважды проверьте диалоговое окно затмения «Web Deployment Assembly».

Это можно найти: Свойства проекта-> Сборка развертывания.

Недавно у меня был плагин eclipse, модифицирующий один из моих веб-проектов, и он добавил, что таинственным образом добавил каталоги тестирования maven / src / test / java, / src / test / resources в сборку развертывания. UGGGG !!!

Именно поэтому мой проект работал нормально, когда я создавал и развертывал просто прямо на tomcat, без ClassNotFoundExceptions ... Однако, когда я делал развертывание через Eclipse, Whammo !! Я начинаю получать ClassNotFoundExceptions, потому что TestCode развертывается.

Eric

0 голосов
/ 19 апреля 2014

У меня была такая же проблема. Все, что я сделал, было

я). Сгенерированные артефакты затмения

mvn clean eclipse:eclipse

б). Обновите проект и перезапустите тест junit. Должно работать нормально.

0 голосов
/ 01 марта 2017

Я вижу Eclipse - java.lang.ClassNotFoundException при запуске тестов junit. Я удалил один из внешних файлов JAR, который был добавлен в проект. После удаления ссылки этого jar-файла на проект из Eclipse. я мог бы запустить тесты Junit.

0 голосов
/ 10 сентября 2013

Я перепробовал все, что прочитал в этом длинном посте, и, что невероятно, для меня сработало то, что вместо того, чтобы щелкнуть по тестовому классу и выбрать Run as JUnit test, щелкнуть по тестовому методу и запустить как JUnit test. Понятия не имею почему?

0 голосов
/ 27 июня 2009

Вы пытались щелкнуть правой кнопкой мыши на корне своего проекта, выбрать «свойства» и убедиться, что CLASSPATH правильный? Если я правильно помню, вот как ты это делаешь.

Что-нибудь о том, как Eclipse выполняет модульные тесты, требующие, чтобы вы добавили JAR junit в CLASSPATH времени выполнения особым образом?

Я использую IntelliJ, поэтому у меня нет этих проблем.

Я бы сам проверил Eclipse, но предпочитаю, чтобы оно не было на моем рабочем столе.

0 голосов
/ 06 июля 2011

Убедитесь, что ваша конфигурация запуска теста НЕ содержит следующие строки, ИЛИ попробуйте включить автоматическое управление зависимостями Maven.

<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
0 голосов
/ 14 июня 2016

при запуске веб-приложений. Большинство из нас получат это исключение. Когда вы получили эту ошибку, вы поместили файлы .class в соответствующую папку.

В веб-приложениях все файлы .class должны находиться в папке WEB-INF \ Classes. если вы используете веб-приложение в Eclipse, пожалуйста, следуйте инструкциям

Шаг 1. Щелкните правой кнопкой мыши папку «Проект» и выберите «Свойства». Шаг 2: Нажмите «Java Build Path», вы увидите различные вкладки, такие как «источник», «проекты», «библиотеки» и т. Д. Шаг 3: выберите Исходную папку. под этим вы увидите детали вашего проекта Шаг 4: в папке «Source» вы увидите опцию Default Output Folder. здесь вы должны указать папку классов под WEB-INF. просто укажите путь как имя проекта / WebContent / WEB-INF / классы структура зависит от вашего приложения пожалуйста, помните, что вам не нужно создавать папку "классы". Eclipse создаст его для вас. Шаг 5: нажмите «ОК» и выполните чистку и сборку проекта. вот и все, теперь ваше приложение будет работать.

0 голосов
/ 05 февраля 2010

Очень старый июль (в каком году), но у меня была такая же проблема.

Фактическая проблема обнаружила, что eclipse не смогла сгенерировать файл класса для файла java, classpath был правильным.

См. Вкладку проблемы и проверьте, отсутствует ли в вашем проекте что-то / файл. Вы можете создать новый проект и добавлять файлы один за другим и собирать их, пока он не прекратит компиляцию и создание классов (проверьте рабочее пространство / proj / bin / package / folder для классов)

странно, но верно, ecplise не сработал, потому что 4 из 20 java-файлов использовали одно изображение, которое отсутствовало. и в результате ни один из файлов Java не был скомпилирован.

CLASSPATH здесь не проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...