NoClassDefFoundError, когда класс находится в папке JBoss 6 WAR WEB-INF / classes - PullRequest
6 голосов
/ 31 марта 2011

Моя проблема в том, что у меня есть веб-приложение, созданное и развернутое в виде файла WAR в JBoss 6. Мой сервлет не может загрузить класс в моем приложении и выдает ошибку NoClassDefFoundError.

Я подтвердил, что этот класс существуетв правильном месте файла WAR.Все мои классы приложений находятся в папке WEB-INF / classes вместе с моим классом сервлетов, который выполняется без помех.На самом деле, кажется, что этот класс не находится на пути к классам, потому что другие аспекты приложения работают отлично.

JBoss работает на JDK 1.6_21, приложение было собрано с JDK 1.6_24, этоне должно быть проблемой, верно?

Кроме того, это приложение прекрасно работает локально в Eclipse, и когда я развертываю файл WAR на отдельном сервере Tomcat 7 и Glassfish 3, они оба находят этот класс без проблем.

Я не ожидаю, что кто-то просто мгновенно узнает, что случилось, если кто-то уже видел что-то подобное раньше, тогда, пожалуйста, поделитесь своим опытом, или если у вас есть хорошие советы или вы знаете о хороших инструментах, чтобы ДЕЙСТВИТЕЛЬНО углубиться в проблемы с классамипожалуйста, поделитесь.

1 Ответ

8 голосов
/ 31 марта 2011

NoClassDefFoundError означает, что класс «загружен», но определение класса не может быть построено. Обычно это происходит, когда в статической инициализации класса есть исключение. Я не раз видел в AppServers, что об исключениях во время статической инициализации не сообщается в файле журнала.

Проверка статических блоков и инициализация статических атрибутов класса, который не работает для потенциальных причин исключений.

Другая причина, которую я видел в JBoss и WebSphere, заключается в том, что веб-приложение распространяет некоторую библиотеку, которая конфликтует с библиотекой на сервере приложений (например, servlet.jar или что-то в этом роде). Обычно проблема решается удалением библиотеки-нарушителя или настройкой механизма загрузки классов на «родительский сначала».

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

...