Hibernate Jboss EAP 6中的ClassNotFoundException,但jar位于类路径(WEB-INF/lib)中

Hibernate Jboss EAP 6中的ClassNotFoundException,但jar位于类路径(WEB-INF/lib)中,hibernate,jboss,jboss7.x,ehcache,Hibernate,Jboss,Jboss7.x,Ehcache,在我的项目中,我将hibernate版本3.2升级到4.1(这是JBoss EAP 6.0中提供的默认版本),并将我的ehcache版本设置为2.8.0 我已将hibernate-ehcache-4.2.8.Final.jar添加到类路径(web inf/lib/)中,并更改了ehcache的配置,如下所示: <prop key="hibernate.cache.region.factory_class"> org.hibernate.cache.eh

在我的项目中,我将hibernate版本3.2升级到4.1(这是JBoss EAP 6.0中提供的默认版本),并将我的ehcache版本设置为2.8.0

我已将hibernate-ehcache-4.2.8.Final.jar添加到类路径(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>
我可以看到类在jar中。我认为这是由于jboss模块的类路径问题造成的。。。征求建议


附言:我没有用maven。使用at构建。

您面临的问题与中所述的相同

在您的特定情况下,Hibernate jar由类加载器加载,该类加载器是加载
Hibernate-ehcache-4.2.8.Final.jar的类加载器的祖先。因此,这些类无法看到
org.hibernate.cache.ehcache.*

解决方案是为EHCache创建一个模块并使用该模块,而不是将jar包含在WEB-INF/lib中

 <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