【问题标题】:Jboss 7 hibernate module is not finding persistence xml classesJboss 7休眠模块没有找到持久性xml类
【发布时间】:2023-03-22 17:33:01
【问题描述】:

我正在尝试将我的项目从 JSF1.2、Hibernate 3.x、Jboss 4.3 迁移到 JSF 2.1、Hibernate 4.x 和 Jboss EAP 6.3。在启动期间,我收到一条错误消息 `

10:46:35,776 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 48) MSC000001: Failed to start service jboss.persistenceunit."MyEAR.ear#myJPA": org.jboss.msc.service.StartException in service jboss.persistenceunit."MyEAR.ear#myJPA": javax.persistence.PersistenceException: [PersistenceUnit: myJPA] class or package not found
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0_45]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: myJPA] class or package not found
    at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1410)
    at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1193)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1057)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:702)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:75)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19]
    ... 4 more
Caused by: java.lang.ClassNotFoundException: 
        com.xxx.persistence.Agent from [Module "org.hibernate:main" from local module loader @26a3960 (finder: local module finder @bdccedd (roots: C:\JbossEAP6.3\jboss-eap-6.3\modules,C:\JbossEAP6.3\jboss-eap-6.3\modules\system\layers\base))]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:447) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:414) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_45]
    at java.lang.Class.forName(Class.java:249) [rt.jar:1.6.0_45]
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:170)
    at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1327)
    at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1399)
    ... 11 more

`

我的EAR结构如下。

  • MyEAR.ear
  • MyWAR.war(持久化单元 myJPA 存在于 web-inf/classes/meta-inf 中)
  • MyEJB.jar(持久性单元 myJPA 存在于 META-INF 中)
  • lib/MyJPA.jar(持久性单元 myJPA 存在于 META-INF 中)
  • 元信息

我的 jboss-deployment-structure.xml 如下。 `

<jboss-deployment-structure>
    <deployment>
        <dependencies>
          <module name="deployment.MyJPA" />
        </dependencies>
        <resources>
            <resource-root path="MyJPA.jar" />
        </resources>
    </deployment>
    <sub-deployment name="MyWAR.war">
        <dependencies>
          <module name="deployment.MyEAR.ear.MyEJB.jar" />
          <module name="deployment.MyJPA" />
        </dependencies>
    </sub-deployment>
    <sub-deployment name="MyEJB.jar">
        <dependencies>
          <module name="deployment.MyJPA" />
        </dependencies>
    </sub-deployment>
    <module name="deployment.MyJPA" >
        <resources>
            <resource-root path="lib/MyJPA.jar"/>
        </resources>
    </module>
</jboss-deployment-structure>

` 我是 Jboss 7 的新手,所以如果我的设置不正确,请告诉我。

【问题讨论】:

    标签: hibernate deployment persistence jboss7.x classnotfound


    【解决方案1】:

    因此,经过大量挖掘和阅读迁移后,事实证明与 jboss 捆绑在一起的 hibernate 无法正确读取我的 persistence.xml。我的持久性 xml 有用回车编写的类,如下所示。

    <class>
    com.someClass
    </class>
    

    我相信休眠在类名中包含换行符/回车符,因此找不到它。它在以前的hibernate 3中运行良好。 虽然我知道我的格式不正确,但我希望 hibernate 修剪并使用类名。无论如何,我的问题已经解决,希望有人觉得这很有帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 2014-04-02
      • 2017-10-11
      • 1970-01-01
      • 2012-10-07
      • 2012-01-09
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多