2015-04-22 148 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)方法。