weblogic.gestion.DeploymentException: java.lang.NoSuchMethodError: javax.persistance.le spi.PersistenceUnitInfo.getValidationMode()
Lors du déploiement de l'application EJB sur Weblogic : 12.2.1, je fais face à l'exception:
" weblogic.gestion.DeploymentException: java.lang.NoSuchMethodError: javax.persistance.le spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistance/ValidationMode"
J'ai la configuration ci-dessous en persistance.xml pour spécifier le fournisseur de persistance
<persistence-unit name="entityManager">
<!-- Use Hibernate persistency -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
Et ci-dessous dans weblogic application.xml
<prefer-application-packages>
<package-name>antlr.*</package-name>
<package-name>javax.persistence.*</package-name>
Avant cette exception, je faisais face l'exception " Erreur instanciant la classe java du fournisseur de persistance.lang.ClassNotFoundException: org.hiberner.ejb.HibernatePersistence " qui a été résolu à partir de
Et depuis lors, je suis confronté à cette exception
J'ai fourni ci-dessous des pots dans le WL_DOMAIN / lib :-
- hibernate jpa-2.0-api-version 1.0.1.Finale
- com.Oracle.jpa2support_1.0. 0. 0_2-1
- mise en veille prolongée
-
Dom4j
Ont également fourni dans le classpath dans les fichiers ci-dessous comme suit dans WL_DOMAIN --- setDomainEnv.cmd
Set EXT_PRE_CLASSPATH=C: \ Projects \ GMPP-CBOSS\MFSS\MFSS\lib \ hibernate \ slf4j- API.pot;C:\Projects\GMPP-CBOSS\MFSS\MFSS\lib\hibernate\hibernate-jpa-api.jar
---TrivEnv.cmd
Ensemble CLASSPATH=C: \ oracle\Middleware2\modules \ javax.persistence_1.0.0.0_1-0- 2.pot;C:\oracle\Middleware2\modules\com.Oracle.jpa2support_1.0.0.0_2- 1.jar; % CLASSPATH %
----communEnv.- - - - - oracle_common/commun / bin
Set CLASSPATH=C:\oracle\Middleware2\modules\javax.persistence_1.0.0.0_1-0- 2.pot;C:\oracle\Middleware2\modules\com.Oracle.jpa2support_1. 0.0.0_2-1.jar;
Ci-dessous est la trace de pile de l'exception: -
<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
>
1 answers
Il peut être possible que javax.persistance_1. 0.0. 0_2-0-0.jar a été ajouté au début et aussi à la fin de server classpath (dans DOMAIN_HOME/lib dir).
En conséquence, deux versions du même jar dans le même chemin de classe du serveur provoquent des incohérences.
SOLUTION Supprimer javax.persistance_1. 0.0. 0_2-0-0.jar du répertoire DOMAIN_HOME / lib.