2015-04-22 75 views
0

我最近更新了我们的(子)项目声明的父pom文件。在所述的pom文件中,我将版本4.0.7.RELEASE中的“org.springframework”依赖项(spring-webmvc,spring-web ...)更新为4.1.6.RELEASE。spring-data-jpa&org.springframework兼容性

在一个子项目/ pom中,我使用了org.springframework.data spring-data-jpa。在更新父文件之前,我的测试通过了。更新后,我看到这个错误:

Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment; 
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:81) 
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74) 
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1426) 
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1416) 
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179) 
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149) 
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:103) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392) 

然后我试图从1.7.1.RELEASE更新弹簧数据的JPA版本1.8.0.RELEASE但错误信息是一样的。

我已经阅读了几篇文章,提示存在依赖关系/ jar冲突,但没有解释这个冲突发生在哪里而不是如何解决它。从我可以收集的内容来看,它导致了这一点的org.springframework的变化。

+1

'mvn dependency:tree -Dverbose',然后查找Spring工件的版本(特别是'spring-beans',在你的情况下)的不一致性并排除违规版本。 – axtavt

回答

0

在我的情况下在org.springframework.data.repository.config.RepositoryBeanDefinitionParser班线:

public BeanDefinition parse(Element element, ParserContext parser) { 
     XmlReaderContext readerContext = parser.getReaderContext(); 

     try { 
      Environment e = readerContext.getEnvironment(); 

引起的: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()

RepositoryBeanDefinitionParser是spring-data-jpa pom.xml文件的spring-data-commons依赖性:

<dependency> 
<groupId>${project.groupId}</groupId> 
<artifactId>spring-data-commons</artifactId> 
<version>${springdata.commons}</version> 
</dependency> 

所以,当我升级我org.springframework.data:spring-data-jpa依赖性更高版本1.9.2.RELEASE(同时具有4.1.0弹簧豆。 RELEASE),我开始得到例外,因为我的XmlReaderContext没有方法getEnvironment()所需的RepositoryBeanDefinitionParser.parse(Element element, ParserContext parser)方法。