2015-04-22 5 views
0

Недавно я обновил родительский файл pom, который объявляют наши (дочерние) проекты. В указанном файле pom я обновлял зависимости «org.springframework» (spring-webmvc, spring-web ...) с версии 4.0.7.RELEASE до 4.1.6.RELEASE.spring-data-jpa & org.springframework совместимость

В дочернем проекте/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) 

Затем я попытался обновить версию пружинно-данных-JPA от 1.7.1.RELEASE к 1.8.0.RELEASE но сообщение об ошибке такое же.

Я прочитал несколько сообщений, предполагающих, что существует конфликт зависимости/jar, но нет объяснений относительно того, где этот конфликт возникает, а не как его разрешить. Из того, что я могу собрать, это изменения в org.springframework, которые вызывают это.

+1

'mvn dependency: tree -Dverbose', а затем искать несоответствия в версиях весенних артефактов (особенно' 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-commons зависимости от spring-data-jpa pom.xml файла:

<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).

Смежные вопросы