0

Je ne peux plus démarrer mon application Spring Boot après l'ajout de la persistance. L'erreur est:Dépendances de source incompatibles (NoSuchMethodError lorsque le constructeur AnnotationRepositoryConfigurationSource est appelé)

java.lang.NoSuchMethodError: org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource.<init>(Lorg/springframework/core/type/AnnotationMetadata;Ljava/lang/Class;Lorg/springframework/core/io/ResourceLoader;Lorg/springframework/core/env/Environment;Lorg/springframework/beans/factory/support/BeanDefinitionRegistry;)V 
at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport$1.<init>(AbstractRepositoryConfigurationSourceSupport.java:68) ~[spring-boot-autoconfigure-1.5.7.RELEASE.jar:1.5.7.RELEASE] 

Je suivis cette baisse aux changements dans printemps-données-communesAnnotationRepositoryConfigurationSource et un argument réside constructeur supplémentaire a été ajouté dans la version 1.13.5, et la version 1.13.7 avec la même signature de constructeur doit être utilisée par spring-boot-starter-data-jpa dans la version 1.5.7. Et nous utilisons uniquement les dépendances Spring Boot avec le numéro de version 1.5.7.

Alors je construit l'arbre de dépendance et étrangement trouvé printemps-données-communes dans la version 1.13.4, 1.13.7 pas (troisième à la dernière ligne):

...(snippet) 
[INFO] +- com.name.project:project-subproject8:jar:1.0.0-SNAPSHOT:compile 
[INFO] | \- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.5.7.RELEASE:compile 
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.5.4.RELEASE:compile 
[INFO] |  | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.15:compile 
[INFO] |  | | \- org.apache.tomcat:tomcat-juli:jar:8.5.15:compile 
[INFO] |  | \- org.springframework:spring-jdbc:jar:4.3.9.RELEASE:compile 
[INFO] |  +- org.hibernate:hibernate-core:jar:5.0.12.Final:compile 
[INFO] |  | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile 
[INFO] |  | +- antlr:antlr:jar:2.7.7:compile 
[INFO] |  | +- org.jboss:jandex:jar:2.0.0.Final:compile 
[INFO] |  | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] |  | \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile 
[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:5.0.12.Final:compile 
[INFO] |  +- javax.transaction:javax.transaction-api:jar:1.2:compile 
[INFO] |  +- org.springframework.data:spring-data-jpa:jar:1.11.4.RELEASE:compile 
[INFO] |  | +- org.springframework.data:spring-data-commons:jar:1.13.4.RELEASE:compile 
[INFO] |  | \- org.springframework:spring-orm:jar:4.3.9.RELEASE:compile 
[INFO] |  \- org.springframework:spring-aspects:jar:4.3.9.RELEASE:compile 
... 

En remontant l'arbre vous peut voir que spring-data-jpa est inclus dans la version 1.11.4, alors que, selon Spring Boot Dependency Appendix, il devrait être la version 1.11.7. Cela semble provoquer l'erreur. Mais nous ne dépendons pas de spring-data-jpa directement via nos fichiers pom. Donc, je ne sais pas comment cette ancienne version est entrée dans l'arbre des dépendances. Le pom de spring-boot-starter-data-jpa n'indique aucun numéro de version.

+0

Avez-vous déjà essayé de résoudre ce problème avec des exclusions ou avec la gestion des dépendances? – pirho

+0

Bien sûr, les exclusions et l'ajout explicite des versions d'artefacts nécessaires sont utiles. Mais cela ne fait que combattre les symptômes. – JustCode

+0

pouvez-vous attacher des parties de depency de votre pom? – pirho

Répondre

0

J'ai eu le même problème, et oui c'est RESOLU maintenant !!! Vous pouvez toujours exclure une dépendance interne particulière de la dépendance externe. Vous avez déjà donné un indice pour résoudre ce problème. La cause première est que vous avez probablement compilé une classe par rapport à une autre version de la classe qui manque une méthode, que celle que vous utilisez lors de son exécution. Je suis passé à la version 1.5.7 de démarrage au printemps, donc j'ai juste besoin d'ajouter la compatibilité jpa compatible avec la version de démarrage du printemps 1.5.7. Pourquoi la dépendance jpa parce que - org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource est dans le paquet de données de printemps. Et cela a fonctionné