在添加持久性之后,我不能再启动Spring应用程序了。错误是:
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-Commons1.13.5版本中添加了一个额外的构造函数参数,在1.5.7版本中使用了具有相同构造函数签名的1.13.7版本应该使用spring starter jpa。而且我们只使用版本1.5.7的Spring依赖项。
因此,我构建了依赖树,奇怪地在版本1.13.4中找到了spring Commons1.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包含在1.11.4版本中,而根据Spring Boot依赖项附录,它应该是1.11.7版本。这似乎是导致错误的原因。但是我们不依赖spring直接通过我们的pom文件。
所以我不知道这个老版本是如何进入依赖树的。spring-boot-starter data-jpa的pom没有指示任何版本号。
发布于 2017-10-23 13:59:33
我也有同样的问题,是的,现在解决了!您可以始终从外部依赖项中排除特定的内部依赖项。你已经给出了解决这个问题的提示。根本原因是,您很可能是针对缺少方法的类的不同版本编译了类,而不是在运行方法时使用的方法。我切换到了1.5.7版本的spring引导,因此我只需要添加与spring 1.5.7版本兼容的jpa依赖项。为什么要依赖jpa,因为- org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource在spring数据包中。它起了作用
https://stackoverflow.com/questions/46745791
复制相似问题