【发布时间】:2018-03-26 12:39:02
【问题描述】:
添加持久性后,我无法再启动我的 Spring Boot 应用程序。错误是:
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 所在的 spring-data-commons 中的变化,并且在 1.13.5 版和 1.13 版中添加了一个额外的构造函数参数。 spring-boot-starter-data-jpa 在 1.5.7 版本中应该使用具有相同构造函数签名的 7.而且我们只使用版本号为 1.5.7 的 Spring Boot 依赖项。
然后我构建了依赖树,奇怪地发现 spring-data-commons 是在 1.13.4 版本,而不是 1.13.7(倒数第三行):
...(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-starter-data-jpa的pom不表示任何版本号。
【问题讨论】:
-
您是否已经尝试通过排除或依赖管理来解决此问题?
-
当然,排除和明确添加所需的工件版本会有所帮助。但这只是治标不治本。
-
你能附上你的 pom 的依赖部分吗?
标签: maven spring-boot spring-data spring-data-commons spring-boot-starter