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 голосов
/ 27 ноября 2013

Тест JUnit изнутри Eclipse дал мне также NoClassDefFoundError. Запуск mvn clean test из командной строки дал мне следующую ошибку на нескольких jar-файлах: неверный заголовок LOC (неверная подпись) Удаление этих jar-файлов из локального репозитория m2 и повторное выполнение mvn clean test решил мою проблему.

0 голосов
/ 14 ноября 2017

Перейдите в «Путь сборки» -> «Исходный код» и переключите на «Да» параметр «Игнорировать дополнительные проблемы компиляции» для всех исходных папок.

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

Пожалуйста, укажите для исправления JDK из Windows> Настройки> Java> Установленный JRE.

Не указывайте на jre, указывайте на правильный JDK. Я указал на JDK 1.6U29 и обновил проект.

В дальнейшем проблема исчезла и тесты jUnit работают нормально.

Спасибо,
-Tapas

0 голосов
/ 01 февраля 2018

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

a. I went through properties -> Java Buildpath -> Maven Dependencies and identified the missed libraries. 
b. Removed the missed libraries artifacts from pom.xml
c. Downloaded the libraries and added them explicitly.
0 голосов
/ 26 января 2013

Недавно я столкнулся с той же ошибкой в ​​Eclipse, то есть Eclipse IDE не смог найти класс модульного теста, независимо от того, как я изменял конфигурации. Извлекая уроки из предыдущих постов здесь и на других веб-сайтах, я дважды проверил и трижды проверил информацию о пути к классам и источникам, а также переместился вверх и вниз по исходной папке и библиотекам как в «Run Configuration», так и в «Java Build Path» "окна настройки, и я также очистил проект и перестроил его, но ни один из приемов не работает для меня. Конкретный Java-проект - это старый ANT-скомпилированный проект, включающий множество jar-файлов, включенных в библиотеку Eclipse.

Затем я изменил класс модульного теста, добавив метод main () и щелкнув его правой кнопкой мыши, чтобы «Запускать от имени» Java-приложения вместо теста JUnit, и внезапно Eclipse, похоже, проснулся и правильно идентифицировал класс. После этого я переключил его обратно в приложение модульного тестирования, и оно все еще работает.

Это похоже на ошибку в Eclipse, я предполагаю, что большое количество библиотек (> 260) может сбить с толку способность JVM найти мой класс JUnit.

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