我使用spring-mvc和mongodb作为数据库构建了一个Web应用程序。我使用maven3来构建应用程序。
项目构建成功,但是当应用程序启动时,我在日志中收到以下错误,因为我的应用程序无法启动。这曾经在几个月前开始工作。
引起:java.lang.IncompatibleClassChangeError:class org.springframework.core.type.classreading.ClassMetadataReadingVisitor 将org.springframework.asm.ClassVisitor接口作为超类
如果有任何指示或者你们需要更多信息,请告诉我。
答案 0 :(得分:74)
当加载的类ClassMetadataReadingVisitor
不遵守继承的抽象类或接口的合同,即ClassVisitor
时,会发生此错误。
看起来在加载时,上述类的不同版本会在您的情况下加载。
你的应用程序中似乎有新的spring-core jar和旧的spring-asm jar。 ClassMetadataReadingVisitor
类正在从 spring-core 加载ClassVisitor
从 spring-asm 加载。
请使用maven dependency:tree
命令查看相关的罐子。
答案 1 :(得分:41)
春季版> 3.2.0,您不再需要明确包含spring-asm
,因为它已包含在spring-core
中。
从构建定义中删除spring-asm
,并确保spring-core
在那里。
答案 2 :(得分:7)
当使用不兼容的jars版本时,通常会显示此错误,例如spring-asm
和spring-core
。看看forum.springsource.org/showthread.php?133341
答案 3 :(得分:0)
我遇到了同样的问题,并通过从spring-data-jpa
pom.xml
依赖关系来解决这个问题
它已包含在spring-core
依赖项中。
答案 4 :(得分:0)
针对那些升级到3.1.x以上版本的用户的更新... this answer here已明确指出,不再有单独的spring-asm
,因此最好将spring-asm
完全排除在外,一旦您使用的是Spring 3.2.x版本