Maison >Java >javaDidacticiel >Pourquoi la mise à niveau vers Hibernate 4.3.0.Final provoque-t-elle une NoSuchMethodError dans javax.persistence.Table.indexes() ?
NoSuchMethodError dans javax.persistence.Table.indexes()
Dans les applications Play Framework utilisant Hibernate, mise à niveau vers Hibernate 4.3.0.Final peut provoquer une exception NoSuchMethodError dans javax.persistence.Table.indexes(). Voici pourquoi cela se produit et comment le résoudre :
Cause :
Le problème survient en raison d'un conflit entre différentes versions des spécifications JPA chargées dans le chemin de classe. Play s'appuie sur une version spécifique de la spécification JPA, tandis qu'Hibernate 4.3.0.Final nécessite une version plus récente. Lorsque les deux versions sont présentes, un conflit se produit, entraînant l'erreur.
Résolution :
Pour résoudre cette erreur, vous devez exclure l'ancienne spécification JPA de Play. classpath tout en ajoutant la version la plus récente requise par Hibernate 4.3.0.Final.
Pour Play 2.2.x, modifiez votre fichier build.sbt comme suit :
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Pour les versions antérieures de Play, reportez-vous à la documentation spécifique de votre version.
En excluant l'ancienne spécification JPA, vous vous assurez que seule la version la plus récente requise par Hibernate 4.3.0.Final est utilisé, résolvant le conflit et l'exception NoSuchMethodError.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!