Erreur de mise en veille prolongée: JavaReflectionManager ne peut pas être converti en MetadataProviderInjector
Problème
En utilisant l'annotation Hibernate, après la mise à niveau de la version Hibernate dev3.2.7 àv3.6, le message d'erreur suivant s'affiche:
Caused by: java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
Voici la liste des bibliothèques d'annotations Hibernate:
-
hibernate3-3.6.0.Final.jar
-
hibernate-annotations-3.4.0.GA.jar
-
hibernate-commons-annotations-3.0.0.GA.jar
Solution
Hibernate annotation module is merged into Hibernate core module since v3.5 (si ce n'est pas une erreur). Dans ce cas, Hibernate détecte deux modules d'annotation, provenant à la fois de «Hibernate core» et de «Hibernate annotation», provoquant un conflit et invitant lesClassCastException
.
Pour résoudre ce problème, supprimez simplement leshibernate-annotations-3.4.0.GA.jar
ethibernate-commons-annotations-3.0.0.GA.jar
, car la dernière bibliothèque principale d'Hibernate est capable d'effectuer une tâche d'annotation sans autre dépendance.