J'ai construit une application Web en utilisant spring-mvc et mongodb comme base de données. J'ai utilisé maven3 pour construire l'application.
Le projet est construit avec succès, mais au démarrage de l'application, l'erreur suivante s'affiche dans les journaux, à cause de laquelle mon application ne démarre pas. Cela fonctionnait il y a quelques mois.
Causé par: Java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor a l'interface org.springframework.asm.ClassVisitor comme super classe
S'il vous plaît laissez-moi savoir si des pointeurs ou si vous les gars avez besoin de plus d'informations.
Cette erreur se produit lorsque la classe chargée, à savoir ClassMetadataReadingVisitor
, ne respecte pas le contrat de la classe ou de l'interface abstraite héritée, à savoir, ClassVisitor
.
Au moment du chargement, différentes versions des classes ci-dessus sont chargées dans votre cas.
Il semble que vous ayez un nouveau bocal à ressort et un vieux bocal à ressort dans votre application. ClassMetadataReadingVisitor
class commence à être chargé à partir de spring-core et ClassVisitor
à partir de spring-asm .
Vérifiez si vous utilisez la commande maven dependency:tree
pour voir les fichiers JAR dépendants.
Dans la version de printemps> 3.2.0, vous n'avez plus besoin d'inclure explicitement spring-asm
car il a déjà été inclus dans spring-core
.
Supprimez spring-asm
de votre définition de construction et assurez-vous que spring-core
est présent.
Cette erreur apparaît généralement lorsque des versions incompatibles de fichiers JAR sont utilisées, par exemple spring-asm
et spring-core
. Jetez un coup d'oeil à forum.springsource.org/showthread.php?133341
J'ai eu le même problème et j'y ai fait face en supprimant ma dépendance spring-data-jpa
de pom.xml
Il est déjà inclus dans la dépendance spring-core
.
Mise à jour pour ceux qui passent aux versions supérieures à 3.1.x ... comme indiqué clairement par cette réponse ici il n'y a plus de spring-asm
séparé, il serait donc préférable d'exclure spring-asm
complètement, une fois que vous êtes à la version 3.2 de Spring .X