2017-03-28 73 views
0

我想將我的項目從JSF1.2,Hibernate 3.x,Jboss 4.3遷移到JSF 2.1,Hibernate 4.x和Jboss EAP 6.3。在啓動過程中,我得到一個錯誤,指出 `Jboss 7休眠模塊沒有找到持久性xml類

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 

`

我的耳朵結構如下。

  • MyEAR.ear
  • MyWAR.war(持久性單元myJPA存在於WEB-INF /類/ META-INF)
  • MyEJB.jar(持久性單元myJPA存在於META-INF)
  • LIB/MyJPA.jar(持久性單元myJPA是在META-INF本)
  • META-INF

我的JBoss部署-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所以請讓我知道,如果我的設置不正確。

回答

0

因此,在深入挖掘並瞭解遷移之後,事實證明,與jboss捆綁在一起的hibernate無法正確讀取我的persistence.xml文件。我的持久性xml有用下面的回車寫的類。

<class> 
com.someClass 
</class> 

我相信hibernate在類名中包含換行符/回車符,因此沒有找到它。它在以前的休眠3中工作正常。 雖然我明白我的格式不正確,但我希望hibernate能夠修剪和使用類名。無論如何,我的問題已解決,希望有人認爲這有幫助。