NoSuchMethodError dans javax.persistence.Table.indexes()[Ljavax/persistence/Index
Question :
Lors de la mise à niveau depuis Hibernate 4.2.5.Final à 4.3.0.Final dans une application Play Framework, une exception se produit :
java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
Réponse :
Le problème survient en raison d'un conflit entre différentes versions de les dépendances de la spécification Java Persistence API (JPA) dans le chemin de classe de l'application. Plus précisément, le plugin Play Framework JPA inclut une dépendance à la spécification JPA 2.0, tandis qu'Hibernate 4.3.0.Final nécessite la nouvelle spécification JPA 2.1.
Pour résoudre ce problème, excluez la dépendance de la spécification JPA 2.0 de la version. .sbt et remplacez-le par la dépendance suivante sur la spécification JPA 2.1 :
"org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.0.Final"
Pour Jouez à 2.2.x, modifiez le 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" )
En excluant la dépendance JPA 2.0 et en incluant la dépendance JPA 2.1, vous vous assurez que la version correcte de la spécification JPA est utilisée, en résolvant 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!