我正在尝试使用Linux中的eclipse在JBOSS AS 5.1.0 GA中部署该产品。
以前它在tomcat 6上成功执行。 部署时我遇到了很多错误。我一个接一个地解决了。
但是现在由于PersistenceProvider而引发了ClassNotFoundException。
我的产品环境是JPA 1.0。我正在使用toplink-essentials.jar,toplink-essentials-agent.jar。 (我的toplink版本是2.0)
请查看错误说明......
11:46:08,276 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=#Entity state=Create
java.lang.ClassNotFoundException:
oracle.toplink.essentials.PersistenceProvider
from BaseClassLoader@12bb617{VFSClassLoaderPolicy@bfa9d6{name=vfsfile:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/ domain=ClassLoaderDomain@16877f8{name=DefaultDomain parentPolicy=BEFORE parent=org.jboss.bootstrap.NoAnnotationURLClassLoader@1837697} roots=[MemoryContextHandler@19344978[path= context=vfsmemory://3j011-idx41v-hfxjen4j-1-hfxjf9qd-2a real=vfsmemory://3j011-idx41v-hfxjen4j-1-hfxjf9qd-2a], FileHandler@22157425[path=iportman_gpl.war/WEB-INF/classes context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/classes/]
这是我尝试部署作为WAR文件的项目时显示的唯一错误。
在执行时,jboss正在加载两个jar。 (toplink-essentials.jar,toplink-essentials-agent.jar)。 (这也显示在错误控制台上)
DelegatingHandler@13596360[path=iportman_gpl.war/WEB-INF/lib/toplink-essentials.jar context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/lib/toplink-essentials.jar]
DelegatingHandler@32401617[path=iportman_gpl.war/WEB-INF/lib/toplink-essentials-agent.jar context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/lib/toplink-essentials-agent.jar]
但仍显示错误。
当我有谷歌关于这个问题的时候,我看到了一些解释,比如......“可能是加载两个PersistenceProvider类或者jboss也加载他们的JPA类”。
但我在 jboss-classloading.xml
中设置了parent-first =“false”下面的代码在我的/WEB-INF/jboss-classloading.xml
中<?xml version="1.0" encoding="UTF-8"?>
<classloading xmlns="urn:jboss:classloading:1.0"
export-all="NON_EMPTY"
import-all="true"
parent-first="false">
</classloading>
我还在/WEB-INF/classes/META-INF/persistence.xml
中声明了以下代码 <persistence-unit name="Entity" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
请帮我解决问题。 我在JBOSS社区发布了同样的问题以寻求他们的帮助,但我没有得到任何回复。
(有关persistence.xml的详细说明和所有jar的列表,请参阅Jboss community link)
所以,任何人都帮我找出问题。 任何建议对我都有很大帮助...... 在此先感谢..
(抱歉我的英语不好)
答案 0 :(得分:1)
当我删除 persistence.xml 中<provider>
标记之间的空格时,上述问题已解决。
<provider>oracle.toplink.essentials.PersistenceProvider</provider>