spring-data-jpa& org.springframework兼容性

时间:2015-04-22 17:16:54

标签: spring compatibility spring-data-jpa

我最近更新了我们(子)项目声明的父pom文件。在所述pom文件中,我更新了" org.springframework"依赖项(spring-webmvc,spring-web ...)从版本4.0.7.RELEASE到4.1.6.RELEASE。

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

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)

然后我尝试将spring-data-jpa版本从1.7.1.RELEASE更新为1.8.0.RELEASE,但错误信息是相同的。

我已经阅读了几篇帖子,建议存在依赖/ jar冲突,但没有解释发生冲突的地方,而不是如何解决冲突。从我可以收集到的,它导致了org.springframework的变化。

1 个答案:

答案 0 :(得分: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-commons pom.xml文件的spring-data-jpa依赖关系:

<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的spring-beans)时,我开始异常,因为我的XmlReaderContext没有getEnvironment()方法所需的方法RepositoryBeanDefinitionParser.parse(Element element, ParserContext parser)