Java 8 weblogic.management.DeploymentException:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()

Java 8 weblogic.management.DeploymentException:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode(),java-8,jpa-2.0,ejb-3.0,weblogic12c,Java 8,Jpa 2.0,Ejb 3.0,Weblogic12c,在Weblogic:12.2.1上部署EJB应用程序时,我面临一个例外: “weblogic.management.DeploymentException:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode” 我在persistence.xml中有以下配置来指定持久性提供程序 <persistenc

在Weblogic:12.2.1上部署EJB应用程序时,我面临一个例外:

“weblogic.management.DeploymentException:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode”

我在persistence.xml中有以下配置来指定持久性提供程序

<persistence-unit name="entityManager">
<!-- Use Hibernate persistency -->  
<provider>org.hibernate.ejb.HibernatePersistence</provider>

org.hibernate.ejb.HibernatePersistence
在weblogic-application.xml中

<prefer-application-packages>
<package-name>antlr.*</package-name>
<package-name>javax.persistence.*</package-name>

antlr*
javax.persistence*

在此异常之前,我遇到了一个异常“实例化持久性提供程序类java.lang.ClassNotFoundException:org.hibernate.ejb.HibernatePersistence时出错”,该异常是从

从那时起,我就面临着这个例外

我在WL_域/lib中提供了以下JAR:-

  • hibernate-jpa-2.0-api-1.0.1.Final
  • com.oracle.jpa2support_1.0.0.0_2-1
  • 冬眠
  • dom4j

    在WL_域中的以下文件的类路径中也提供了 ---setDomainEnv.cmd

    设置EXT\u PRE\u CLASSPATH=C:\Projects\GMPP-CBOSS\MFSS\MFSS\lib\hibernate\slf4j- api.jar;C:\Projects\GMPP-CBOSS\MFSS\MFSS\lib\hibernate\hibernate-jpa-api.jar

    ---TrivEnv.cmd

    设置CLASSPATH=C:\oracle\Middleware2\modules\javax.persistence\u 1.0.0\u 1-0- 2.jar;C:\oracle\Middleware2\modules\com.oracle.jpa2support\u 1.0.0.0\u 2- 1.罐子;%类路径%

    ----commonEnv.cmd------oracle_common/common/bin

    设置CLASSPATH=C:\oracle\Middleware2\modules\javax.persistence\u 1.0.0\u 1-0- 2.jar;C:\oracle\Middleware2\modules\com.oracle.jpa2support_1.0.0.0_2-1.jar

  • 以下是异常的堆栈跟踪:-

       <28 May, 2018, 3:38:26,86 PM IST> <Warning> <Deployer> <WL-149078> <Stack 
    trace for message 149004
    weblogic.management.DeploymentException: java.lang.NoSuchMethodError:   
    javax.persistence.spi.PersistenceUnitInfo.getValidationMode() 
    Ljavax/persistence/ValidationMode;
        at weblogic.application.internal.BaseDeployment .throwAppException 
       (BaseDeployment.java:132)
        at weblogic.application.internal.BaseDeployment.prepare 
       (BaseDeployment.java:242)
        at weblogic.application.internal.EarDeployment.prepare 
     (EarDeployment.java:66)
        at weblogic.application.internal. DeploymentStateChecker.prepare 
      (DeploymentStateChecker.java:158)
        at weblogic.deploy.internal.targetserver.AppContainerInvoker. 
      prepare(AppContainerInvoker.java:65)
        Truncated. see log file for complete stacktrace
      Caused By: java.lang.NoSuchMethodError: 
       javax.persistence.spi.PersistenceUnitInfo.getValidationMode() 
      Ljavax/persistence/ValidationMode;
        at org.hibernate.ejb.Ejb3Configuration.configure 
      (Ejb3Configuration.java:625)
        at org.hibernate.ejb.HibernatePersistence.createContainer 
      EntityManagerFactory (HibernatePersistence.java:73)
        at weblogic.persistence.BasePersistenceUnitInfo.initializeEntity 
     ManagerFactory(BasePersistenceUnitInfo.java:614)
        at weblogic.persistence.BasePersistenceUnitInfo. 
     init(BasePersistenceUnitInfo.java:202)
        at weblogic.persistence.BaseJPAIntegrationProvider. 
      createPersistenceUnitInfo(BaseJPAIntegrationProvider.java:54)
        Truncated. see log file for complete stacktrace
     >
    

    有可能javax.persistence_1.0.0.0_2-0-0.jar被添加到服务器类路径的开头和结尾(在DOMAIN_HOME/lib dir中)

    因此,同一服务器类路径中同一jar的两个版本会导致不一致

    解决方案 从域\u HOME/lib目录中删除javax.persistence\u 1.0.0\u 2-0-0.jar

    资料来源: