org.springframework.core.annotation.AnnotationUtils.clearCache()V 错误解决(SSM项目)

org.springframework.core.annotation.AnnotationUtils.clearCache 错误解决

问题描述

之前在写了一些 SSM 的项目之后, 自己搭了一个简单的 CRUD+邮件注册和登录 的脚手架,前几天运行过一次结果良好, 今天想迁移一部分东西到 SpringBoot 的项目上结果死活没法用, 出现如题这个问题, 折磨了人近4个小时不断查资料。。。
我遇到的问题跟大多数回答和博客上的解决方法并不一样, 由于没遇到过这种问题, 就一直以为是 maven依赖冲突的原因 ,但是结果显然没有这么简单。过程忽略, 直接说结果吧。

  • 报错日志

    java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V
    	at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:915)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:575)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
    	at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1783)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:293)
    	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:460)
    	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:408)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:293)
    	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    	at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)
    	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
    	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
    	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
    	at sun.rmi.transport.Transport$1.run(Transport.java:200)
    	at sun.rmi.transport.Transport$1.run(Transport.java:197)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    

解决办法

方法一

如同网上大多数博文列举的方法, 查看 maven 依赖的包是否发生冲突。

点开如下图所示 maven 管理界面 或者 打开 pom.xml 查看是否有

  • 依赖重复导入
  • spring-context:5.0 与 spring-context:4.8 重复导入。
  • Spring依赖包版本不一致
  • spring-context:5.0 spring-bean:4.0 则为不一致
  • Spring依赖包循环依赖的情况
  • 比如: spring-webmvc 依赖了 spring-web, 则需要检查 spring-webmvc 和 spring-web 是否是相同版本。
  • spring-context-support 依赖 spring-context, 则需要检查 spring-context-support 和 spring-context 是否是相同版本。


方法二

显然如果我的问题像方法一样, 肯定不会花我 4个小时时间了 img
非常令人无语的是, 这个问题最终并不需要其他专业的解决方法, 只要把项目重新导入或者迁移到新的项目就好了。。。

也即这个问题实质上是导入过程或者缓存的问题 , 总之很玄学 , 请恕我无法理解。 也即这个问题实质上是导入过程或者缓存的问题, 总之很玄学, 请恕我无法理解。 也即这个问题实质上是导入过程或者缓存的问题,总之很玄学,请恕我无法理解。

  • 迁移项目

    我这里把报错的项目复制粘贴到一个空的新项目中运行就 OK 了。
    img

  • 重新导入项目

    这里推荐把有问题的项目复制到另一个位置, 然后重新导入到 IDEA。
    在这里插入图片描述


Success

结果如下, 说多了都是泪, 哎。。。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值