ClassNotFoundException в Jboss EAP 6, но файл находится в пути к классам (WEB-INF/lib)
В моем проекте я обновляю версию hibernate 3.2 до 4.1(которая по умолчанию предоставляется в JBoss EAP 6.0) и устанавливаю версию ehcache на 2.8.0.
Я добавил hibernate-ehcache-4.2.8.Final.jar в classpath(web-inf/lib/) и изменил мой конфиг для ehcache следующим образом:
<prop key="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</prop>
<prop key="net.sf.ehcache.configurationResourceName">ehcache.xml</prop>
для загрузки классов Hibernate в classpath я добавил зависимость в jboss-deploy-structure.xml следующим образом.
<module name="org.hibernate" export="true"/>
<module name="org.hibernate.commons-annotations" export="true"/>
Но при запуске сервера я сталкиваюсь с этой ошибкой,
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.cache.ehcache.EhCacheRegionFactory]
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:141) [hibernate-core-4.1.3.Final-redhat-1-JBPAPP-9359.jar:4.1.4-SNAPSHOT]
at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:386) [hibernate-core-4.1.3.Final-redhat-1-JBPAPP-9359.jar:4.1.4-SNAPSHOT]
... 68 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.cache.ehcache.EhCacheRegionFactory
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$1.findClass(ClassLoaderServiceImpl.java:99) [hibernate-core-4.1.3.Final-redhat-1-JBPAPP-9359.jar:4.1.4-SNAPSHOT]
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) [rt.jar:1.7.0_05]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [rt.jar:1.7.0_05]
at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_05]
at java.lang.Class.forName(Class.java:264) [rt.jar:1.7.0_05]
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138) [hibernate-core-4.1.3.Final-redhat-1-JBPAPP-9359.jar:4.1.4-SNAPSHOT]
... 69 more
Я вижу, что класс находится в банке. Я думаю, что это из-за некоторой проблемы с classpath модуля jboss... просить предложения.
PS: я не использую Maven. Используя at, чтобы построить.
1 ответ
Вы столкнулись с той же проблемой, как описано в этом ответе.
В вашем конкретном случае JAR-файлы Hibernate загружаются загрузчиком классов, который является предком загрузчика классов, который загружает hibernate-ehcache-4.2.8.Final.jar
, Таким образом, эти классы не могут видеть org.hibernate.cache.ehcache.*
,
Решением было бы создать модуль для EHCache и использовать этот модуль вместо того, чтобы включать jar в WEB-INF/lib.