java.lang.NoClassDefFoundError, когда файл там

Я пытался найти сообщения, которые могут мне помочь, но не могу их найти.

Я развернул ухо на сервере JBoss4, и у меня возникла эта проблема, так как я добавил новый проект.

этот новый проект определен как Java-проект в Eclipse, а у EAR-проекта есть EJB-проект, в котором новый Java-проект является одним из проектов, зависящих от него - при развертывании на JBoss локально через Eclipse проблем нет, и все идет гладко

Но при развертывании в JBoss в тестовой среде (вне затмения) продолжал получать java.lang.NoClassDefFoundError в одном из классов, определенных в новом проекте Java.

Я заглянул внутрь EAR-файла, чтобы добраться до jar (проект EJB), а затем внутри jar я могу увидеть структуру каталогов и все файлы классов из нового проекта Java - т.е. Класс, на который он жалуется, находится прямо внутри EAR->JAR и соответствует точной структуре, которую он ищет.

Я потерян к тому, на что еще я могу смотреть.

Любые указатели очень ценятся!

Спасибо

5 ответов

Решение

Вы часто получаете эту ошибку, если есть несоответствие в способе, которым были скомпилированы некоторые классы. Например, если вы скомпилировали некоторые классы в более поздней версии JDK без установки уровня соответствия Java, и вы запускаете его с более ранней версией.

Я предлагаю проверить JDK, с которым вы запускаете JBoss, а затем проверить, как вы скомпилировали свои классы.

У меня была такая проблема с JBoss 4: ClassNotFoundException и NoClassDefFoundError во время выполнения, даже если код хорошо скомпилирован. Мне понадобилось 4 часа, чтобы выяснить причину.

BuildPath моих проектов были в порядке, проблема была в ClassPath JBoss. Я решил это следующим образом: JBoss 4.2 RunTime Server > Открыть конфигурацию запуска> Изменить конфигурацию> ClassPath > добавить JAR-файлы и проекты для ссылки на JBoss с помощью "Добавить JAR-файлы" / "Добавить проекты".

Eclipse знал классы в JAR-файлах и связанных с ними проектах благодаря BuildPath, поэтому в IDE не было ошибок, но сервер JBoss не знал, где найти эти классы...

Это также может быть связано с проблемами изоляции загрузчика классов, если у вас есть несколько файлов war/ear

Проверьте файл уха. структура как это?

myapp.ear
|+ META-INF
   |+ applications.xml and jboss-app.xml
|+ myapp.war
   |+ web pages and JSP /JSF pages
   |+ WEB-INF
      |+ web.xml, jboss-web.xml, faces-config.xml etc.
      |+ lib
         |+ tag library JARs
      |+ classes
         |+ servlets and other classes used by web pages
|+ myapp.jar
   |+ EJB3 bean classes
   |+ META-INF
      |+ ejb-jar.xml and persistence.xml
|+ lib
   |+ Library JARs for the EAR

если нет, вы должны переупаковать ваш файл уха.

Проверьте свойство "Class-Path:" в META-INF/MANIFEST.MF,

Другие вопросы по тегам