Ошибка NoClassDefFoundError, но класс существует

#java #noclassdeffounderror #netbeans-7

#java #ошибка noclassdeffounderror #netbeans-7

Вопрос:

Вот ошибка:

 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: sfclocator/UpdateNameForm
    at sfclocator.SFCViewer.(SFCViewer.java:68)
    at sfclocator.SFCViewer$10.run(SFCViewer.java:1823)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: sfclocator.UpdateNameForm
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  

Я создал эту программу как проект Netbeans 7.0. Я работал над этим около 2-3 дней и закончил вчера. Вчера все работало отлично. Я лег спать, проснулся, запустил его этим утром, и внезапно я получил ошибки. Я исправил ошибки, которые появлялись, за исключением этой.

Проект отлично собран, и JAR даже работает просто отлично, но когда я пытаюсь запустить проект с помощью Netbeans, он выдает мне эту ошибку. Буду признателен за любую помощь.


Дополнительная информация, которую я только что узнал:

При сборке класс UpdateNameForm существует в папке classes проекта netbeans, но когда я нажимаю выполнить, он удаляет классы UpdateNameForm.

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

1. Можете ли вы увидеть класс UpdateNameForm , если выполните поиск по нему в NetBeans?

2. @The Elite да, я могу. Он находится в проекте и в папке classes самого проекта netbeans. Пожалуйста, проверьте обновление выше

3. у вас есть скрипт сборки, который очищает вашу сборку?

4. @The Elite как я уже сказал, это проект netbeans. Кнопка очистки и сборки в netbeans делает это автоматически. Он также перестраивает конечный файл JAR программы в папку «dist», и этот JAR работает.

5. Я испытываю то же самое с одним из моих проектов в NB7… несколько дней назад все работало нормально. В моем случае это веб-приложение, и оно завершается с ошибкой при загрузке компонентов из контекста приложения spring.

Ответ №1:

у меня была похожая проблема, я решил ее, сначала удалив jar из пути сборки, а затем добавив его снова. Создайте проект после повторного добавления jar. Иногда путь сборки не обновляется… я надеюсь, что это сработает и для вас.

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

1. Я не понимаю, что вы имеете в виду. У меня нет JAR в моем пути сборки. Единственный JAR, необходимый для сборки моего проекта, это AbsoluteLayout.JAR

Ответ №2:

У меня внезапно возникла та же проблема. Я проверил выходные данные процесса сборки в /build / classes и не смог найти отсутствующий класс. Неудивительно, что сообщение об ошибке… Мой способ исправить это в NetBeans 8.2 состоял в том, чтобы щелкнуть правой кнопкой мыши по проекту, чтобы открыть страницу свойств. Затем перейдите к компиляции в разделе Build и снимите флажок Compile on Save (Компиляция при сохранении). После этого я произвел некоторое фиктивное редактирование проблемного класса — ввел System.out … и снова удалил его — и сохранил. После этого я смог щелкнуть правой кнопкой мыши по классу и выбрать Compile File. Снова проверяя / build / classes, я мог видеть, что классы теперь были созданы. Запуск программы сработал, и я смог повторно проверить поле компиляции при сохранении в свойствах проекта.

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

1. Этот ответ помог решить мою проблему с NetBeans 10. Просто добавьте system.out и сохраните файл, а затем удалите его впоследствии. Мне не нужно было выполнять никаких дополнительных шагов.

Ответ №3:

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

Ответ №4:

Такого рода проблемы почти всегда возникают из-за проблем с classpath.

  • Проверьте свой параметр classpath
  • Убедитесь, что jar, содержащий ваш класс, можно найти в среде выполнения
  • Убедитесь, что класс не находится в другом jar, найденном ранее в вашем classpath — особенно в более ранней / более поздней версии jar (т. Е. Если вы обновили, но не очистили свои старые jar)

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

1. Я не знаю, как проверить мой путь к классу. Все мои классы хранятся в папке сборки проекта netbeans, и все они там. Единственный JAR, необходимый для сборки, это AbsoluteLayout.JAR

2. Это единственный ответ, который приближается к фактическому решению этой ошибки

3. Ответ ссылкой на сайт, продающий программное обеспечение за 8 995 долларов, вряд ли можно назвать полезным.

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