天天看点

spring版本引起的问题

今天在做项目的时候,加入了aspectj,然后就在平稳运行了很久的项目上报错了,我去,先上错误日志

Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
    at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parseInternal(AnnotationDrivenBeanDefinitionParser.java:)
    at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:)
    ...  more
           

这是啥问题了呢?看exception,说的是方法不存在,然后我就顺着去找这个类,check一下,到底有没有这个方法,接着

spring版本引起的问题

一看,有这么多同名的,再一看,因为有不同的spring的版本,所以……,好吧,问题找到了,因为spring引入了多个版本,所以有可能类加载器加载了部分4.0的和部分2.0.8的,然后,然后,然后就出错了,所以,解决方法就是删除低版本的jar包就可以了,

这种类似的问题还很多,基本上都是因为版本冲突的问题,另外,下面我在提供两个链接,他们和我遇到了一样的问题

1、stackoverflow.上的

2、spring自己论坛上的

3、spring jira上面的类似问题

4、这个和第一个链接是一个人