此异常一般为spring版本冲突,或者某个组件引入了老的spring版本。
本次博主遇见的情况是引入一个工具类后,就报错了
解决方案:剔除工具类中的spring依赖,
<dependency>
<groupId>com.taobao.hjutil</groupId>
<artifactId>hjutil</artifactId>
<version>1.1.6</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
主要是使用exclusions标签:
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
1.定位冲突包
这里的难点是需要定位到哪一个组件使用到了spring中的AnnotationAwareOrderComparator类中还未存在的sort方法。
本次异常博主定位到是由spring-2.5.6.SEC02.jar版本的spring包造成,从网上查询到其他人的版本可能也有spring-2.5.6.SEC03.jar造成。或者是其他2.x版本的spring 包造成
定位spring包:首先在idea中找到maven模块,点击自己的项目名,点击如下图标
idea会生成一个结构树,按ctrl+f后,输入spring搜索
由此可见,spring在我的项目中,由各个组件分别引入了3次。此时找到是哪三个组件引入了这三个spring包。这三个spring包也可能是不同版本的。分别exclusion一下排除掉冲突
2.定位了是谁引入了问题包
那么根据这个spring如何找到是哪个包引入了它呢,就在图中找到谁的箭头指向了它,就是谁引入了它
由此可知是由hjutil包引入了spring包。 定位到了是谁引入的就可以在对应包中排除掉冲突的spring包了。