java服务启动报错:
nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.Si
mpleAnnotationMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(Cl
assPathScanningCandidateComponentProvider.java:237)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.j
ava:204)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionPar
ser.java:84)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDel
egate.java:1335)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDel
egate.java:1325)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDef
initionDocumentReader.java:135)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBean
DefinitionDocumentReader.java:93)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader

报错信息中可以仔细看如下:
class org.springframework.core.type.classreading.SimpleAnnotationMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
可以重点看 ClassVisitor 这个信息,应该是jar包冲突的原因。因为看错误信息,ClassVisitor应该是有个同包同名的一个接口和一个类。
定位到jar冲突那就排查哪些jar冲突了。查看服务所有的jar包。
发现有spring-asm-3.0.5的jar包。打开这个jar看到ClassVisitor是个接口


jar包太多,无法逐一排查,看报错提示包名应该也是org.springframework.asm 。应该也是spring相关的jar有冲突了。继续查看所有spring相关jar。发现有2个高版本的spring相关jar。将他们down下来查看一下。

在5.2.11包中同包同名的ClassVisitor是一个类

找到冲突的jar了,接下来就是排除相关的jar。排除后应该就能解决此问题了
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
本文探讨了Java应用启动时因Spring框架冲突导致的ClassVisitor错误,通过排查和排除高版本jar包,成功解决了类加载不兼容问题。关键步骤包括识别冲突源、确认冲突类和接口、以及配置文件中排除相关依赖。
3648

被折叠的 条评论
为什么被折叠?



