maven项目的pom.xml引入其他服务的jar,开发环境运行正常,但是部署到服务器上却启动报错:
java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
依赖jar查找网址:https://www.findjar.com/index.x
原因分析:
“IncompatibleClassChangeError”表明是jar冲突,根据后面的“org.springframework.core.type.classreading.ClassMetadataReadingVisitor ”查找所在的jar。查找网址:https://www.findjar.com/index.x 然后输入类路径“classreading.ClassMetadataReadingVisitor”就可以,就可以看到“classreading.ClassMetadataReadingVisitor”所在的jar,如下图:
然后点击上图中搜索结果中的任意链接,可以看到所依赖的jar,如下图:
上图中的spring.jar和spring-core.jar就是所依赖的jar。
所以就是spring版本升级带来的jar冲突。
在分析项目的spring依赖包,发现原来以来的是spring版本是3.1,而集成的服务把spring-core和spring-bean的版本变为了版本:4.2,其他的spring依赖包却还是3.1。经测试spring所有依赖都变为4.2或者3.1,项目新的服务或者以前的服务都会报错,所以需要分析哪些包需要升级到4.2,哪些不需要升级?
方法是:根据日志文件,找到报错的类依赖的是类在哪个jar,然后调整当前jar的版本。