Что такое ClassDefNotFoundException и NoClassDefFoundError и объяснить различия между этими двумя?ClassDefNotFoundException
ответ
Как правило, NoClassDefFoundError
выбрасывается, если класс не удалось инициализировать.
Когда класс используется в первый раз, он инициализируется. если это не по какой-либо причине, то возникает соответствующее исключение. http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4
Когда класс используется снова, он, как известно, поврежден. Инициализация не будет предпринята снова. JVM бросает таинственный NoClassDefFoundError
. Не совсем описать проблему, может быть довольно запутанной для диагностики. Было бы лучше, если будет выброшено что-то вроде ClassInitFailedError
.
Когда вы видите NoClassDefFoundError
, вы должны искать бревно в обратном направлении, найти причину, почему класс не удалось инициализировать (надеюсь, он вошел в систему)
Там нет ClassDefNotFoundException в стандартной Java Lib, так что я не знаю, о чем вы говорите.
Да, это ClassNotFoundException. Как проверено, кто-нибудь, кто сделал что-либо с библиотеками отражения, должен быть слишком хорошо знаком с ним. NoClassDefFoundError появляется, когда вы скомпилированы против класса, который среда выполнения не может найти. Он появляется чаще всего, когда classpath в вашей сборке не соответствует пути к классам для вашей среды выполнения, а также когда вы делаете такие вещи, как насмешка и DI, я думаю. – CurtainDog
отказ от решения других классов может быть одной из причин, по которым процесс инициализации завершился неудачно. но в целом многие вещи могут пойти не так. в моей собственной практике большинство случаев - это то, что статические инициализаторы имеют ошибки программирования и внезапно заканчиваются. – irreputable
ClassNotFoundException
бросается, когда класс не может быть найден в пути к классам. NoClassDefFoundError
происходит, когда класс не может быть создан экземпляром new
, потому что jvm не смог инициализировать класс. Это может быть конструктор, который бросает исключения, или статический блок взваливается, или несоответствие версии.
И разница? –
Ядро Java - Что ClassDefNotFoundException и ...
Очевидно, что вы ищете для Selva и выплевываете первый результат здесь. Это приведет к более тривиальным вопросам, задаваемым здесь на этом форуме ... –
- 1. Ant + JUnit4 ClassDefNotFoundException - Classpath Issue?
- 2. MapActivity ClassDefNotFoundException во время выполнения
- 3. ClassDefNotFoundException - но он работал нормально вплоть до 10 минут назад
- 4. Определение класса Не найдено Исключение
- 5. Использование расширения FreeType в GWT?
- 6. shiro сеанс-хранилище с использованием dao через несколько веб-приложений
- 7. Какова цель при запуске проекта Maven/Wicket в Eclipse?
- 8. Динамическая загрузка класса в java с другим именем пакета
- 9. Android Studio: файлы Jar, входящие в состав модуля Java, не найдены во время выполнения
- 10. Невозможно запустить java-прогам! NoClassDefFoundError?
- 11. Загрузка javaFx в Apache felix
- 12. Android не может разрешать классы из внешних банок
- 13. Странное поведение Spring на Jetty, когда spring.jar находится в WEB-INF/lib/вместо classpath
- 14. Пользовательский HttpClient для RemoteConverter документов4j
- 15. Как правильно установить путь к классам в командной строке Windows
- 16. Конфигурация Spring & hibernate (с использованием maven): java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
домашняя работа или вопрос об интервью? –
Вы пробовали поиск? что ты нашел? –
Извините, но это довольно ясно из Javadoc. Единственное, что может потребовать больше объяснений, это разница между Exception и Error, но я уверен, что есть много вопросов, которые уже задают это. @ Thorbjørn Ravn Andersen - это был бы могучий неприятный вопрос для интервью, если бы не ответ на него был «Я бы посмотрел его в Javadoc» – CurtainDog