Problème de dépendance Spring asm dans Spring Data

Problème de dépendance Spring ASM dans Spring Data

En utilisant Spring Data MongoDB 1.2.1.RELEASE et Spring core 3.2.2.RELEASE, pendant le démarrage du système, il rencontre des erreurs étranges de spring-asmIncompatibleClassChangeError:

java.lang.IncompatibleClassChangeError:
class org.springframework.core.type.classreading.ClassMetadataReadingVisitor
has interface org.springframework.asm.ClassVisitor as super class

pom.xml

    

        3.2.2.RELEASE
        1.2.1.RELEASE

    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
        
            org.springframework.data
            spring-data-mongodb
            ${springdata.version}
        

        
        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

    

Solution

Cela est dû au fait que les données Spring obtiennent l'ancien Spring-asm 3.1.4.RELEASE et sont en conflit avec le dernier noyau Spring 3.2.2.RELEASE.

Vérifiez toutes les dépendances avec la commandemvn dependency:tree de Maven.

# mvn dependency:tree

[INFO] +- org.springframework:spring-core:jar:3.2.2.RELEASE:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile

[INFO] +- org.springframework.data:spring-data-mongodb:jar:1.2.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-tx:jar:3.1.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:3.1.4.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-asm:jar:3.1.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:3.1.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-expression:jar:3.1.4.RELEASE:compile
[INFO] |  +- org.springframework.data:spring-data-commons:jar:1.5.1.RELEASE:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.1:compile
[INFO] |  \- org.slf4j:jcl-over-slf4j:jar:1.7.1:runtime

[INFO] +- org.springframework:spring-web:jar:3.2.2.RELEASE:compile
[INFO] |  +- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  \- org.springframework:spring-aop:jar:3.2.2.RELEASE:compile
[INFO] \- org.springframework:spring-webmvc:jar:3.2.2.RELEASE:compile

Peu de façons de le réparer.

1. Définissez la dépendance de données Spring «AFTER» les dépendances liées à Spring. Les dépendances transitives Maven récupèrent automatiquement les dépendances Spring correctes.

pom.xml

    

        3.2.2.RELEASE
        1.2.1.RELEASE

    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

                
        
            org.springframework.data
            spring-data-mongodb
            ${springdata.version}
        

    

Vérifiez à nouveau l'arborescence des dépendances Maven.

2. Ajoutezspring-asm à la liste d'exclusion.

pom.xml

        
    
        org.springframework.data
        spring-data-mongodb
        ${springdata.version}
                
           
              org.springframework
                      spring-asm
          
        
    

3. Attendez la dernière version des données du printemps :)

Note
Reportez-vous à cethread pour plus d'informations.