使用hibernate 4.3.8时,Jboss as 7.1会抛出java.lang.NoClassDefFoundError

时间:2015-03-04 18:24:22

标签: java jboss7.x jpa-2.0 hibernate-4.x

我是hibernate的新手,并试图用于我的项目,我正在使用hibernate 4.3.8-Final,当我以7.1的形式部署到Jboss时,我收到了以下错误

Caused by: java.lang.ClassNotFoundException: org.jboss.as.jpa.hibernate4.JBossAppServerJtaPlatform from [Module "org.jboss.as.jpa.hibernate:4" from lo
cal module loader @699774b8 (roots: D:\Softwares\jboss-as-7.1.1.Final\modules)]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA]
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA]
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA]
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA]
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]

我已经按照下面的jboss配置使用了更新的hibernate版本

  

https://docs.jboss.org/author/display/AS72/JPA+Reference+Guide#JPAReferenceGuide-ReplacingthecurrentHibernate4.0.xjarswithanewerversion

但是我在joboss中进行了这些配置后,我已经超越了异常。

当我查看Jboss jpa配置时,我看到jboss.api被加载而​​不是hibernate。

<module xmlns="urn:jboss:module:1.1" name="org.jboss.as.jpa">
    <properties>
        <property name="jboss.api" value="private"/>
    </properties>

    <resources>
        <resource-root path="jboss-as-jpa-7.1.1.Final.jar"/>
        <!-- Insert resources here -->
    </resources>

所以我的问题是如何在jboss jpa之前加载hibernate jpa,或者还有其他替代方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

  • Jboss 7.1.1捆绑了Hibernate 4.0.1。
  • Wildfy 8.2提供4.3.7。

实际上这意味着,如果你想依赖于“提供的”Hibernate-JPA库,你的应用程序的“休眠”要求必须符合上述要求。但是,你可以选择创建一个war,jar或ear应用程序,在其中提供你喜欢的Hibernate-JPA版本。

我的建议是试用Wildfly,它比7.1.x好得多,而且Hibernate 4.3.7和4.3.8之间没有太大的变化

就个人而言,我会避免“修补”应用程序服务器,除非这是影响我的应用程序的关键问题。

如需进一步的帮助,您必须提供Maven pom文件。