0

지속성을 추가 한 후에 Spring 시작 애플리케이션을 더 이상 시작할 수 없습니다. 오류 : 호환되지 않는 Spring 종속성 (AnnotationRepositoryConfigurationSource 생성자가 호출 될 때 NoSuchMethodError)

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] 

내가 함께 AnnotationRepositoryConfigurationSource 상주 및 추가 생성자 인수 버전 1.13.5에서 추가되었다 스프링 데이터 공유지 및 버전 1.13.7에 변경이를 아래로 추적 동일한 생성자 서명을 버전 1.5.7에서 spring-boot-startter-data-jpa으로 사용해야합니다. 그리고 버전 1.5.7의 스프링 부트 의존성 만 사용합니다.

그래서 나는 종속성 트리를 구축하고 이상하게되지 1.13.7 (세 번째 마지막 행) 버전 1.13.4에 스프링 데이터 평민에게을 발견 :

...(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 
... 

트리 당신을가는 spring-data-jpa은 버전 1.11.4에 포함되는 반면, Spring Boot Dependency Appendix에 따르면 버전 1.11.7이어야합니다. 이 오류가 발생할 것으로 보입니다. 그러나 우리는 우리의 pom 파일을 통해 spring-data-jpa에 직접 의존하지 않습니다.

그래서 어떻게이 오래된 버전이 종속성 트리에 들어 왔는지 알 수 없습니다. 의 spring-boot-startter-data-jpa은 버전 번호를 나타내지 않습니다.

+0

이미 배타적으로 또는 종속성 관리로 이것을 고치려고 했습니까? – pirho

+0

물론 필요한 이슈 버전을 제외하고 명시 적으로 추가하는 것은 도움이됩니다. 그러나 그것은 단지 증상과 싸우고 있습니다. – JustCode

+0

당신은 귀하의 pom의 depency 부분을 첨부 할 수 있습니까? – pirho

답변

0

나는 똑같은 문제가 있었고, 지금 그것은 풀렸다. 외부 종속성에서 특정 내부 종속성을 항상 제외 할 수 있습니다. 이미이 문제를 해결하기위한 힌트를 주셨습니다. 근본적인 원인은 메서드 실행시 사용할 클래스가 아닌 다른 버전의 클래스에 대해 클래스를 컴파일했을 가능성이 큽니다. 스프링 부트의 1.5.7 버전으로 전환했기 때문에 스프링 부트 1.5.7 버전과 호환되는 jpa 종속성을 추가해야했습니다. org-springframework.data.repository.config.AnnotationRepositoryConfigurationSource가 스프링 데이터 패키지에 있기 때문에 왜 jpa 종속성이되는지. 그리고 그것은 작동했습니다