我正在尝试将我的项目从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结构如下。
我的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的新手,所以如果我的设置不正确,请告诉我。
答案 0 :(得分:0)
因此经过大量的挖掘并阅读有关迁移的内容后,发现与jboss捆绑在一起的hibernate无法正确读取我的persistence.xml。我的持久性xml使用如下的回车写入类。
f.write(randomDate)
我认为hibernate在类名中包含换行符/回车符,因此找不到它。它在之前的hibernate 3中运行良好。 虽然我知道我的格式不正确,但我希望hibernate可以修剪并使用类名。无论如何,我的问题已经解决,希望有人发现这有用。