Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:org.hibernate.ejb.HibernatePersistence不能强制转换为WebLogic中的javax.persistence.spi.PersistenceProvider_Java_Hibernate_Jpa_Jenkins_Weblogic - Fatal编程技术网

java.lang.ClassCastException:org.hibernate.ejb.HibernatePersistence不能强制转换为WebLogic中的javax.persistence.spi.PersistenceProvider

java.lang.ClassCastException:org.hibernate.ejb.HibernatePersistence不能强制转换为WebLogic中的javax.persistence.spi.PersistenceProvider,java,hibernate,jpa,jenkins,weblogic,Java,Hibernate,Jpa,Jenkins,Weblogic,当我尝试使用Jenkins将WAR文件部署到WebLogic(12)服务器时,标题中出现了一个异常。当我将相同的WAR文件部署到本地主机WebLogic(10.3.6)时,一切正常。我正在开发NetBeans7.4,它有Hibernate3.6.10,我的本地WebLogic已经更新,可以与JPA2.0一起使用 我已经尝试了我在网上看到的一切,但我无法解决这个错误。mypersistence.xml定义了持久性提供程序(Hibernate),仅此而已。我的weblogic.xml有标签,可以使用

当我尝试使用Jenkins将WAR文件部署到WebLogic(12)服务器时,标题中出现了一个异常。当我将相同的WAR文件部署到本地主机WebLogic(10.3.6)时,一切正常。我正在开发NetBeans7.4,它有Hibernate3.6.10,我的本地WebLogic已经更新,可以与JPA2.0一起使用

我已经尝试了我在网上看到的一切,但我无法解决这个错误。mypersistence.xml定义了持久性提供程序(Hibernate),仅此而已。我的weblogic.xml有标签,可以使用应用程序JARS antlr.*、org.hibernate.*和javax.persistence.*(我是从内存中编写的,请稍等)。如果我删除javax.persistence.*我会得到一个java.lang.NoSuchFieldError:实例异常

我读到的所有东西都指向持久性的两个不同版本,这就是问题的根源。我想如果我告诉weblogic使用复制到WAR文件(/lib)中的所有内容,它就会使用它。我不能提供任何关于Web服务器的信息,因为我只知道它使用的是WebLogic 12

哦,还有一件事,我没有使用Spring(我读的很多帖子都是这样处理的)。我将Hibernate用于Oracle DB的持久性,Web服务器是WebLogic 12

有什么想法或想法吗


谢谢。

是的,这篇文章有点老了,但在我问了这个问题一个半月后,我确实找到了问题的原因

问题是Jenkins部署项目的工作区并没有在每次部署时都得到正确清理,因此实际上存在多个版本的持久性。不幸的是,我无法控制Jenkins所做的任何事情,比如异常计划构建之类的,所以我只能听命于其他人,他们在六周的催促后,终于发现工作区需要清理


我希望这可以节省一些人数周的时间。

符合JPA1.0的Weblogic 10.3.x。要在weblogic 10.3.x上运行JPA 2.0应用程序,您必须将persistence.xml重命名为其他名称,如xyz.xml,并在Spring配置文件中进行配置,如下所示:

 <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
     <property value="classpath:META-INF/xyz.xml" name="persistenceXmlLocation"/>
     <property name="persistenceUnitName" value="persistenceUnit"/>
     <property name="dataSource" ref="dataSource"/>
 </bean>

根据应用程序中的bean重命名persistenceUnit和数据源

并在weblogic.xml文件中定义包排除,如下所示:

<?xml version="1.0" encoding="UTF-8"?><wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
<wls:weblogic-version>10.3.3</wls:weblogic-version>
<wls:container-descriptor>
 <wls:index-directory-enabled>false</wls:index-directory-enabled>
<package-name>javax.persistence.spi.*</package-name> 
 <wls:prefer-application-packages>
   <wls:package-name>antlr.*</wls:package-name>
   <wls:package-name>org.apache.commons.*</wls:package-name>
   <wls:package-name>org.apache.xmlbeans.*</wls:package-name>
   <wls:package-name>org.springframework.*</wls:package-name>
   <wls:package-name>org.hibernate.*</wls:package-name>
   <wls:package-name>org.hibernate.validator.*</wls:package-name>
   <wls:package-name>javax.persistence.*</wls:package-name>
   <wls:package-name>org.joda.*</wls:package-name></wls:prefer-application-packages></wls:container-descriptor></wls:weblogic-web-app>

10.3.3
假的
javax.persistence.spi.*
antlr*
org.apache.commons*
org.apache.xmlbeans*
org.springframework*
org.hibernate*
org.hibernate.validator*
javax.persistence*
org.joda*