Странное "java.lang.NoClassDefFoundError" в Eclipse - PullRequest
42 голосов
/ 10 февраля 2010

У меня есть проект Java в Eclipse, который прекрасно работает до сегодняшнего дня, пока я не обновил некоторые файлы (включая файл ant build.xml).Когда я собираю проект, появляется следующая ошибка:

java.lang.NoClassDefFoundError: proj/absa/FrontEnd/ApplicationStarter
Caused by: java.lang.ClassNotFoundException: proj.absa.FrontEnd.ApplicationStarter
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source) at
    java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)  
Exception in thread "main" 

У кого-нибудь есть подсказка, где может быть проблема?

Ответы [ 21 ]

38 голосов
/ 24 февраля 2012

Doing Project-> Clean ... в Eclipse решил эту проблему для меня.

9 голосов
/ 10 февраля 2010

java.lang.ClassNotFoundException означает проблемы CLASSPATH. Отсутствие подсказки означает, что вы предполагаете, что CLASSPATH установлен правильно, но это не так.

Если вы собираете с помощью Eclipse, убедитесь, что каталог, в котором находятся ваши скомпилированные файлы .class, находится в CLASSPATH и содержит необходимые файлы .class.

Если вы собираете с помощью Ant, убедитесь, что вы видите что-то подобное в вашем build.xml:

<path id="production.class.path">
    <pathelement location="${production.classes}"/>
    <pathelement location="${production.resources}"/>
    <fileset dir="${production.lib}">
        <include name="**/*.jar"/>
        <exclude name="**/junit*.jar"/>
        <exclude name="**/*test*.jar"/>
    </fileset>
</path>

ОБНОВЛЕНИЕ: Либо у вас нет JAVA_HOME / bin в вашем PATH, либо вы загрузили JRE вместо JDK. Проверьте каталог, в котором вы установили Java, и посмотрите, есть ли в вашем каталоге / bin файл javac.exe. Если у вас нет / bin, скачайте JDK и установите его.

Если у вас есть / bin с javac.exe, проверьте ваш PATH и убедитесь, что каталог Java / bin находится в PATH. Установив его, откройте командную оболочку и введите «javac -version», чтобы убедиться, что все в порядке.

Какой JDK вы сказали Eclipse для использования?

4 голосов
/ 03 апреля 2012

Как упомянуто выше, «java.lang.ClassNotFoundException означает проблемы CLASSPATH.»

В моей установке я запускаю Maven для сборки (вместо Ant) и использую Eclipse (вместо Netbeans).

Обычно для сборки и настройки проекта я запускаю 'mvn clean', 'mvn compile', 'mvn eclipse: eclipse' из командной строки Windows. Последняя команда mvn eclipse: eclipse обновляет конфигурацию проекта, создавая файлы .classpath и .project.

Чтобы решить эту проблему, я удалил два файла (.classpath и .project), а затем повторно выполнил три команды.

Поэтому, в зависимости от вашей конфигурации, попробуйте найти файлы classpath / project (сделать резервную копию) и удалить их. Вы также можете попробовать удалить папку target / release / build (независимо от того, что создано из команды build). Затем попробуйте снова собрать / упаковать / настроить свой проект.

2 голосов
/ 04 мая 2012

Я думал, что моя проблема и ее решение могут помочь. Так что я получаю ту же ошибку в моем проекте затмения. В моем проекте у меня есть несколько файлов JAR, и NOCLASSDEFERROR был брошен для файла в файле JAR.

Мои библиотечные файлы были частью имени папки "lib" в иерархии моего проекта. Я изменил имя папки на "libs" и вуаля это сработало.

(Я заглянул в файл .classpath и у меня были пары ключ-значение, а запись для моего файла jar содержала ключ с именем "lib", и, следовательно, я подумал, что, возможно, изменение из lib может помочь.)

1 голос
/ 26 июня 2013

У меня была похожая проблема, и она имела отношение к библиотекам, на которые ссылается путь сборки java; Я делал ссылки на библиотеки, которые больше не существовали, когда я делал обновление. Когда я удалил эти ссылки, по проекту снова начал работать.

Библиотеки перечислены в разделе Путь сборки Java в окне свойств проекта.

Надеюсь, это поможет.

1 голос
/ 25 марта 2013

перейдите к пути сборки и проверьте наличие ошибок в файлах jar, они могут быть перемещены в другое место. если у вас есть ошибки в файлах jar. Удалите их и найдите, нажав добавить внешние банки.

-cnufederer

1 голос
/ 31 мая 2013

Убедитесь, что на все библиотеки, которые вы используете в своем проекте, нет ссылок из другого проекта в рабочей области. Это была моя проблема.

1 голос
/ 31 мая 2012

Я обнаружил, что у меня есть jar в WEB-INF / lib, который был в моем classpath, однако, когда я обновил его до последней версии, имя файла было другим. Удаление старого файла JAR из пути к классам и добавление нового исправило проблему. Как ни странно, Eclipse, похоже, не предупредил меня о том, что старый файл jar отсутствует и, по-видимому, компилируется, однако ничего не компилируется, следовательно, NoClassDefFoundError. Подсказка для меня заключалась в том, что каталог build / classes был настроен в проекте как выходная папка, но файлы классов не создавались там после сборки.

1 голос
/ 02 января 2012

Я тоже столкнулся с той же проблемой. Затем обнаружил, что путь к папке lib в пути к классам установлен неправильно.

1 голос
/ 27 апреля 2011

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

Выход из Eclipse и перезапуск, как правило, работают для устранения красного флага на затронутом классе, но иногда красный флаг остается в проекте, затем мне также нужно закрыть проект и открыть его, чтобы избавиться от отдельного красного флага. , Довольно странно видеть красный флаг на проекте без красных флагов ни в одном из дочерних каталогов.

В кластерах проектов Maven я закрываю и открываю все проекты в кластере после перезапуска Eclipse.

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