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
если нет, вы должны переупаковать ваш файл уха.