2017-02-08 2 views
0
02:35:43,076 WARN [org.jboss.modules] (default task-8) Failed to define class com.karthik.db.jpub.mapping.ObjUser in Module "deployment.CVRepo.war:main" from Service M 
odule Loader: java.lang.NoClassDefFoundError: Failed to link com/karthik/db/jpub/mapping/ObjUser (Module "deployment.CVRepo.war:main" from Service Module Loader): oracle/sql/ORAData 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
     at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:446) 
     at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:274) 
     at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:78) 
     at org.jboss.modules.Module.loadModuleClass(Module.java:605) 
     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 

Здесь класс ObjUser принадлежит Data.jar. Data.jar существует в папке WEB-INF/lib CVRepo.war
1) Что вызывает эту ошибку, даже если jar - data.jar, содержащий класс ObjUser.class, упакован в CVRepo.war.
2) Должны ли внешние банки (data.jar) удаляться из папки WEB-INF/lib WAR и быть добавлены в качестве модуля и называться в jboss-deployment.xml WAR в JBOSS 7?java.lang.NoClassDefFoundError для класса, принадлежащего пользовательской jar в JBOSS 7 EAP

ответ

0

NoClassDefFoundError, как правило, выбрасывается из-за того, что класс не находится в пути к классам, что может быть связано с указанным параметром изоляции приложения или установки класса загрузчика. Посмотрите отчет Tattletale Report: Class Location, чтобы найти, где он упакован, и сравните с настройками изоляции. & Путь Java EE, определенный для определенного типа развертывания.

Примечание: если класс не существует в приложении, а исходный файл java не отображает класс, декомпилируйте класс с помощью javap или другого декомпилятора и посмотрите, соответствует ли определение класса исходному. Некоторые IDE могут генерировать недопустимые классы, когда classpath не хватает классов, они могут генерировать класс с недопустимыми ссылками на классы, и если они будут развернуты, это вызовет необычные ClassNotFoundExceptions, такие как имя класса без пакета.

NoClassDefFoundError бросается, когда JVM пытается загрузить определение класса, и определение не может быть найдено. NoClassDefFoundError вызван типично ClassNotFoundException или ExceptionInInitializerError. После первоначального ClassNotFoundException/ExceptionInInitializerError, JVM просто выбросит NoClassDefFoundError и не покажет исходную причину.

Обзор полный server.log и найти первое исключение загрузки классов

Сошлитесь ссылку основных классов Загрузка питания: https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

+0

Спасибо за помощь мне. Я понимаю, что NoClassDefFoundError обычно генерируется, потому что класс не находится в пути к классу, но класс - ObjUser связан внутри CVRepo.war. Он существует в data.jar папки WEB-INF/lib. Поэтому в идеале он должен быть доступен в classpath – Karthik

Смежные вопросы