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 ]

1 голос
/ 14 марта 2012

нажмите project->properties->Java build path->Source и проверьте, что каждая папка src все еще существует, существует или недавно удалена. Исправьте пропущенный или неверный путь, перестройте и запустите тест. Это решит проблему.

1 голос
/ 09 апреля 2013

Пробовал

Link : [here][1]

Open your run configurations
Click on the jUnit-Test you want to start
go to the classpath tab
Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source))

работал после

Maven 2 LifeCycle >> test

1 голос
/ 14 августа 2010

Решение моей проблемы, которое было похоже: библиотеки были недействительными. Если вы посмотрите в файле .classpath проекта, вы увидите теги classpathentry с ключом / значением kind = "lib". Некоторые из моих были неверны.

Я не обнаружил этого, пока не отключил параметры проверки. То есть в файлах JSP и т. Д. Было так много ошибок, что ошибки пути к классам не были очевидными (или, возможно, даже появлялись). В результате ничего не компилировалось в выходные папки назначения, но никаких полезных ошибок почему.

1 голос
/ 12 апреля 2013

Я попробовал все решения на этой странице: обновить проект, восстановить, все проекты очистить, перезапустить Eclipse, повторно импортировать (даже) проекты, восстановить maven и обновить. Ничего не получалось. сделал работу, скопировав класс в новое имя , которое работает нормально - причудливо, но верно.

После того, как я некоторое время с этим мирился, я просто исправил это:

  1. Через меню Run
  2. Выбрать Run Configurations
  3. Выберите конфигурацию прогона, связанную с вашим модульным тестом.
  4. Удаление записи из Run Configuration нажатием клавиши удаления или щелчком красного X.

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

1 голос
/ 27 июня 2009

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

@RunWith(SpringJUnit4ClassRunner.class)
public class UserDaoTest {
}

и дай мне знать, как ты с этим справляешься.

Убедитесь, что вы автоматически включили сборку. Если вы хотите убедиться, что ваши тестовые классы скомпилированы правильно, очистите целевую папку Maven (и любую папку bin, которую может использовать Eclipse). Вы тоже используете m2eclipse, так как я нахожу это немного проблематичным.

1 голос
/ 04 апреля 2013

Все, что я сделал, это Свойства -> Путь сборки Java -> Порядок и экспорт -> Включил все непроверенные поля -> Переместил Junit полностью вверх

1 голос
/ 17 февраля 2011

Я тоже столкнулся с этой проблемой и смог найти подходящее решение для моего случая.Если в вашем проекте Eclipse есть файл .classpath в корневом каталоге проекта (см. Его в представлении «Навигатор» вместо представления «Проводник пакетов»), убедитесь, что ваша заявка на класс Maven отображается перед вашей проверкой класса JRE-контейнера.у вашего проекта нет файла .classpath, вы можете отредактировать Java Build Path вашего проекта, чтобы переключить порядок и экспорт.Если в вашем проекте есть файл .classpath, и вы изменили только порядок в пути сборки Java, вы увидите, что порядок не затронут, и проблема будет продолжаться.

И проект-> очистить никогдапричиняет боль после внесения изменений.

1 голос
/ 04 января 2018

Обычно эта проблема возникает при запуске Java-приложения java Утилита не может найти файл класса.

В основном в проекте maven мы видим эту проблему, поскольку Eclipse-Maven sync проблема Чтобы решить эту проблему: Maven-> Обновить конфигурацию

1 голос
/ 21 октября 2013

Удаление проекта из затмения (а не с жесткого диска), который каким-то образом очищает рабочее пространство и повторно импортирует проект в затмение, снова работает для меня.

0 голосов
/ 10 декабря 2015

JUnit 4.4 не поддерживается интеграцией JMockit / JUnit. Только поддерживаются версии 4.5 или новее.

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