Java 不兼容ClassChangeError:类ClassMetadataReadingVisitor将接口ClassVisitor作为超类
我使用SpringMVC和mongodb作为数据库构建了一个web应用程序。我使用maven3构建应用程序 项目成功构建,但当应用程序启动时,我在日志中收到以下错误,导致我的应用程序无法启动。这在几个月前就起作用了 原因:java.lang.CompatibleClassChangeError:类 org.springframework.core.type.classreading.ClassMetadataReadingVisitor 将接口org.springframework.asm.ClassVisitor作为超级类Java 不兼容ClassChangeError:类ClassMetadataReadingVisitor将接口ClassVisitor作为超类,java,spring-mvc,maven-3,Java,Spring Mvc,Maven 3,我使用SpringMVC和mongodb作为数据库构建了一个web应用程序。我使用maven3构建应用程序 项目成功构建,但当应用程序启动时,我在日志中收到以下错误,导致我的应用程序无法启动。这在几个月前就起作用了 原因:java.lang.CompatibleClassChangeError:类 org.springframework.core.type.classreading.ClassMetadataReadingVisitor 将接口org.springframework.asm.Cl
请告诉我是否有任何指针或你们是否需要更多信息。当加载的类,即
ClassMetadataReadingVisitor
不遵守继承的抽象类或接口,即ClassVisitor
的约定时,会发生此错误
看起来在加载时,您的案例中正在加载上述类的不同版本
您的应用程序中似乎有新的spring核心jar和旧的spring asm jarClassMetadataReadingVisitor
类从SpringCore和ClassVisitor
从SpringASM加载
请使用maven
dependency:tree
命令查看相关JAR。此错误通常在使用不可计算的JAR版本时出现,例如spring asm
和spring core
。看看spring版本>3.2.0中的,您不再需要显式地包含spring asm
,因为它已经包含在spring core
中
从构建定义中删除spring asm
,并确保spring core
存在
我也遇到了同样的问题,通过从
pom.xml
它已经包含在SpringCore的依赖项中。对于那些升级到3.1.x以上版本的用户,它将进行更新。。。正如前面所说的那样,不再有单独的
spring asm
,因此最好将spring asm
全部排除在外,一旦您使用spring 3.2.x版是的,我看到了不同版本的spring JAR。mongodb依赖项正在使用最新的JAR。我应该如何解决这个问题?因为mongo依赖项需要最新的spring,所以您也会增加spring依赖项。但是你说它过去一直在工作,这意味着mongo jars可能没有为它的spring依赖定义任何版本,所以自动拉取最新版本。检查mongo罐子的pom。谢谢你的提醒。是的,它的mongo JAR没有定义版本依赖关系。目前我使用的是最新的spring版本。它帮助我删除了cglib
,这取决于asm
。请参考下面链接中的答案