java.lang.NoClassDefFoundError из каждого класса каждый день

#java #netbeans

#java — язык #сетевые приложения #java #netbeans

Вопрос:

Я пытался переустановить netbeans, я пытался переустановить java. Я не уверен, что происходит, но я получаю это исключение случайным образом из каждого класса, пока не перезапущу netbeans. У кого-нибудь похожие проблемы?

запустите:

 Exception in thread "main" java.lang.NoClassDefFoundError: com/company/utilities/formatters/DateFinder
    at com.protocase.db.DatabaseAdapter.<init>(DatabaseAdapter.java:44)
    at packagingqueries.PackagingQueries.getBatchIDsForOperation(PackagingQueries.java:42)
    at packagingqueries.PackagingQueries.main(PackagingQueries.java:20)
Caused by: java.lang.ClassNotFoundException: com.protocase.utilities.formatters.DateFinder
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
  

Комментарии:

1. Вы пробовали делать чистую сборку? Иногда это помогает в Eclipse.

2. Да, я пробовал, к сожалению, ничего не вышло.

Ответ №1:

Иногда каталог локального кэша NetBeans повреждается (либо из-за сбоя приложения ранее, либо из-за того, что произошло что-то другое / неопределенное). NetBeans начинает вести себя странно. Повторная установка не помогает, потому что каталог локального кэша не всегда удаляется.

Если вы на 100% уверены, что в вашем приложении нет проблемы с path:

  1. Закройте NetBeans
  2. Если вы используете Windows, перейдите в c:Usersyouruserid.netbeans7.0 (еще найдите соответствующий каталог в вашей системе)
  3. Полностью удалите содержимое
  4. Перезапустите NetBeans

NetBeans воссоздаст содержимое этого каталога. Это может решить вашу проблему. Если этого не происходит, то ваша проблема заключается в конфигурации вашего приложения или, наверняка, в поврежденной библиотеке.

Если в месте, где хранятся эти файлы, не хватает места для записи, может возникнуть эта проблема. Как обычно, нужно освободить место…

Комментарии:

1. Если вы используете Mac OS, папка: /Users/yourUserId/Library/Caches/NetBeans/version/index Заменит yourUserId и версию netbeans.

2. Для NetBeans 8.0 в Windows 8 путь таков C:Users[User Name]AppDataLocalNetBeansCache8.0 Это решило мою проблему, которая сохранялась после переименования проекта, сброса, перенастройки и повторного создания.

3. Для пользователей Windows для простого копирования и вставки: %appdata%..localNetBeansCache

4. Спасибо! Это работает отлично! Может быть довольно неприятно, когда вещи случайным образом перестают работать, и кажется, что кэш обычно является причиной проблемы 😉

Ответ №2:

Возможно, вы запускаете свой проект с опцией «Скомпилировать при сохранении». Пожалуйста, снимите этот флажок.

Я знаю, что эта опция очень полезна, но «Компиляция при сохранении» вызывает такие проблемы.

Комментарии:

1. Вы, сэр … спасаете жизнь!! Работал над относительно обширным проектом (около 80 файлов кода плюс.) и внезапно Netbeans начал жаловаться, что не может найти класс базовой подсистемы!!! Пытался полностью перезагрузить проект и его зависимости, несколько перезапусков и как раз собирался переустановить Netbeans, когда увидел ваш пост; оказывается, простое отключение «Компиляции при сохранении» устранило проблему. Большое спасибо!!

2. Это сработало и для меня в 8.1 (Mac OSX). Очистка кэша не помогла. Интересно, относится ли это к netbeans.org/bugzilla/show_bug.cgi?id=194263 тоже

3. Очень полезный ответ!

Ответ №3:

Обычно это проблема с путем к КЛАССУ. Попробуйте сбросить путь к КЛАССУ и / или убедитесь, что все сторонние JAR-файлы действительно присутствуют в правильных местах. В некоторых редких случаях вы столкнетесь с этой проблемой, когда у JVM возникнут проблемы с загрузкой стороннего jar-файла из-за несовместимости версий. Можете ли вы опубликовать свои настройки CLASSPATH?

Комментарии:

1. Проблема с путем к КЛАССУ, да. Я устрою ей головокружение.

2. Как мне опубликовать мои настройки classpath?

3. Я просто имел в виду, где мне это взять?

4. Не уверен, разобрались ли вы с этим еще или нет. Но чтобы получить настройки пути к классам, откройте свойства проекта и перейдите в Библиотеки. Скопируйте и вставьте сюда настройки для запуска тестов.

5. Не уверен, обновил ли Netbeans 7.0 панель свойств, но похоже, что обновил. Я проверю после работы и обновлю свой комментарий выше.

Ответ №4:

@dah: насколько я понимаю, ваш код развернут в JDK, сконфигурированном netbeans как простое Java-приложение. При запуске вашего приложения вы столкнулись с проблемой ошибки NoClassDefFoundError? Это правильное понимание. Ошибка NoClassDefFoundError может быть вызвана любой из следующих проблем:- i) класс действительно отсутствует. sol: очевидное решение. ii) Класс присутствует, но все еще ошибка. Sol: проверьте, присутствует ли оно в classpath. здесь важна видимость загрузчика классов. iii) Класс присутствует и присутствует в classpath, но все равно ошибка. Sol: Если у вас есть класс в jar, это может быть связано с тем, что jar был создан с использованием другой версии java, отличной от той, которую используете вы. Итак, вам нужно перекомпилировать jar, а затем заменить новый jar. проверьте это: — http://code.google.com/p/versioncheck

Комментарии:

1. Под развернутым вы имеете в виду, что я запускаю его из папки dist в другом месте? В основном это происходит во время отладки.

Ответ №5:

У меня была такая же проблема, ошибка Class not Found, и после прочтения некоторых из этих комментариев обнаружил, что netbeans потеряет ссылку на добавленные файлы jar в библиотеке. Удаление jar-файлов и их повторное добавление в библиотеку приведет к воссозданию ссылки.

Ответ №6:

У меня была похожая проблема, которая вызывала NoClassDefFoundError вызванную ClassNotFoundException .

В моем случае я скопировал зависимость в свой pom.xml это включало строку

 <scope>provided</scope>
  

Похоже, что netbeans / maven загрузили jar в Netbeans для разработки и компиляции, но не включили его в исполняемый файл jar, поскольку я сказал, что он «предоставлен».

Когда я удалил эту строку из своего pom.xml , ошибка исчезла.

Ответ №7:

Очень простой способ заключается в том, что немного измените свой код, что означает некоторые небольшие изменения, очистите и снова выполните сборку. означает любой способ заставить ваш компилятор принудительно скомпилировать вашу программную форму снова, и таким образом она будет запущена.

Попробуйте, это будет полезно.

Ответ №8:

У меня эта проблема возникла сразу после того, как NetBeans сказал «мало памяти». Я пробовал другие решения, перезапуск, перезагрузку, удаление различных каталогов, как указано выше, безрезультатно.

По какой-то причине получилось удалить каталог классов из / build, а затем выполнить очистку / Build. Не знаю, почему это сработало, потому что я думал, что dir все равно был удален во время «очистки» … возможно, его удаление конструктивно запутало NetBeans (?)

Ответ №9:

Я запускаю Netbeans 6.9.1, и время от времени он просто запутывается и начинает говорить, что не может найти некоторые ссылки. Я запускаю его на двух разных компьютерах с Windows с разными конфигурациями, и это происходит на них обоих. В большинстве случаев это связано с файлом .jar. Единственное решение, которое я смог придумать, это перезапустить Netbeans.

Комментарии:

1. Перезапуск Netbeans на самом деле не решение, это скорее обходной путь.

2. Решение — это метод, который решает проблему. Обходной путь — это решение, которое оставляет нерешенными некоторые менее важные проблемы.

Ответ №10:

Я использовал решение, опубликованное JVerstry. Я работал для себя над:

ubuntu studio с netbeans 8.0.2

проблема возникла после установки плагина jax-rpc для создания клиента веб-службы.

надеюсь, это поможет кому-нибудь еще.

Ответ №11:

Такая ошибка может произойти даже в netbeans 15, поэтому похоже, что она не зависит от версии. Это может быть связано с одной и той же ситуацией, упомянутой во всех этих ценных сообщениях выше. Это может быть связано с «компиляцией при сохранении», особенно при использовании компиляции классов в реальном времени с помощью javax.tools. Иногда полное удаление кэша netbeans решает проблему, но иногда после удаления кэша мне приходилось очищать и компилировать проект перед его запуском.

Итак, подводя итог, возможным способом может быть:

  1. Удалите кэш netbeans и попробуйте включить / выключить настройку «компиляция при сохранении»
  2. Очистите и скомпилируйте, затем запустите проект

…в следующий раз, когда это внезапно произойдет, повторите эти шаги. Это также может отображаться как ошибка «classloader» или «не удается найти основной класс». Ошибка.