找不到 hibernate 4.3 的 jboss-as-jpa jar

Posted

技术标签:

【中文标题】找不到 hibernate 4.3 的 jboss-as-jpa jar【英文标题】:cannot find a jboss-as-jpa jar for hibernate 4.3 【发布时间】:2020-03-11 18:34:44 【问题描述】:

我正在将基于hibernate 的项目从4.2.0 升级到4.3.2。该项目以.ear 的形式部署在jboss-eap-6.4

该项目使用jboss-as-jpa。我在.ear 中定义了一个persistance.xml,其中包含以下属性

    <property name="hibernate.transaction.jta.platform" 
              value="org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform" />  

(从休眠4.2.0升级到4.3.2时,JBossAppServerJtaPlatform的包位置从org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform更改为org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform。)

如果我启动jboss,它几乎会立即停止,并且服务器日志中会出现以下错误。

17:40:26,412 WARN  [org.jboss.modules] (ServerService Thread Pool -- 27) Failed to define class org.jboss.as.jpa.hibernate4.JBossAppServerJtaPlatform in Module "org.jboss.as.jpa.hibernate:4" from local module loader @757942a1 (finder: local module finder @4a87761d (roots: C:\AlanLal\jboss-eap-6.4\modules,C:\AlanLal\jboss-eap-6.4\modules\system\layers\base)): java.lang.LinkageError: Failed to link org/jboss/as/jpa/hibernate4/JBossAppServerJtaPlatform (Module "org.jboss.as.jpa.hibernate:4" from local module loader @757942a1 (finder: local module finder @4a87761d (roots: C:\AlanLal\jboss-eap-6.4\modules,C:\AlanLal\jboss-eap-6.4\modules\system\layers\base)))
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:487) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:277) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:92) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.Module.loadModuleClass(Module.java:568) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.as.jpa.hibernate4.HibernatePersistenceProviderAdaptor.injectJtaManager(HibernatePersistenceProviderAdaptor.java:50)
    at org.jboss.as.jpa.processor.PersistenceProviderAdaptorLoader.loadPersistenceAdapterModule(PersistenceProviderAdaptorLoader.java:117) [jboss-as-jpa-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
    at org.jboss.as.jpa.subsystem.JPAExtension.initialize(JPAExtension.java:110) [jboss-as-jpa-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
    at org.jboss.as.controller.extension.ExtensionAddHandler.initializeExtension(ExtensionAddHandler.java:97) [jboss-as-controller-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
    at org.jboss.as.controller.extension.ParallelExtensionAddHandler$ExtensionInitializeTask.call(ParallelExtensionAddHandler.java:139) [jboss-as-controller-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
    at org.jboss.as.controller.extension.ParallelExtensionAddHandler$ExtensionInitializeTask.call(ParallelExtensionAddHandler.java:125) [jboss-as-controller-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_172]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_172]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_172]
    at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_172]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.2.Final-redhat-1.jar:2.1.2.Final-redhat-1]
Caused by: java.lang.NoClassDefFoundError: org/hibernate/service/jta/platform/internal/JBossAppServerJtaPlatform
    at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_172]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) [rt.jar:1.8.0_172]
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482) [jboss-modules.jar:1.3.6.Final-redhat-1]
    ... 19 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform from [Module "org.jboss.as.jpa.hibernate:4" from local module loader @757942a1 (finder: local module finder @4a87761d (roots: C:\AlanLal\jboss-eap-6.4\modules,C:\AlanLal\jboss-eap-6.4\modules\system\layers\base))]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.6.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.6.Final-redhat-1]
    ... 23 more

经过进一步原因分析,我在 jboss 模块文件夹 jboss-as-jpa-hibernate4-7.5.0.Final-redhat-21.jar 中找到了一个 jar。这个 jar 中的一个类仍然从 org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform (hibernate 4.2.) 扩展,这会导致错误发生

我尝试过的事情

我试图在redhat maven repo 中找到这个jar 的更新版本,但我找不到适合Hibernate 4.3.0 的兼容版本(即使最新版本仍然引用org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform

我尝试升级到 hibernate 5.,但在他们的 maven 存储库中找不到 jboss-as-jpa-hibernate4-7.5.0.Final-redhat-21.jar 的兼容版本。

我是否可以在其他任何地方找到与 hibernate 4.3.0 or even 5 兼容的这个 jar,或者上述 repo 中的任何其他包都可以起到相同的作用

【问题讨论】:

【参考方案1】:

EAP 6.4 支持 Hibernate 4.2.18.Final 开箱即用。恕我直言,不建议使用不同的版本,这会带来一些麻烦。但总的来说,根据 Hibernate 应该是可以的。您将不得不修补服务器。您可以找到更多信息,例如这里:https://docs.jboss.org/hibernate/orm/5.3/topical/html_single/wildfly/Wildfly.html

请注意,您可能会失去 Redhat 对 EAP 的支持。

【讨论】:

嗨,我用 hibernate 5 升级到了 jboss eap 7,它对我有用。感谢您的帮助:)

以上是关于找不到 hibernate 4.3 的 jboss-as-jpa jar的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决

jboss部署出现jboss.naming.context.java.rmi找不到错误

hibernate

找不到 mysql.jdbc.Driver - MySQL、JBoss

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:找不到响应对象类型的 MessageBodyWriter

找不到 freemarker div-close.ftl 升级到 JBoss 7