IncompatibleClassChangeError:class ClassMetadataReadingVisitor将接口ClassVisitor作为超类

我使用spring-mvc和mongodb作为数据库构build了一个Web应用程序。 我用maven3来构build应用程序。

项目build立成功,但是当应用程序启动时,我收到日志中的以下错误,因为我的应用程序无法启动。 这曾经在几个月前工作。

引起:java.lang.IncompatibleClassChangeError:类org.springframework.core.type.classreading.ClassMetadataReadingVisitor具有接口org.springframework.asm.ClassVisitor作为超类

请让我知道,如果任何指针或如果你们需要更多的信息。

当加载的类,即ClassMetadataReadingVisitor不尊重inheritance的抽象类或接口即ClassVisitor的契约时,会发生此错误。

看起来像加载时上述类的不同版本正在加载你的情况。

似乎你的应用程序中有新的弹簧jar和旧的弹簧jar。 ClassMetadataReadingVisitor类是从spring-asm的 spring-coreClassVisitor加载的。

请检查使用Maven的dependency:tree命令来查看依赖的jar子。

在Spring版本> 3.2.0中,不再需要明确包含spring-asm因为它已经包含在spring-core

从构build定义中删除spring-asm ,并确保spring-core在那里。

http://static.springsource.org/spring-framework/docs/current/spring-framework-reference/html/migration-3.2.html#migration-3.2-inline-asm

当使用不兼容的jar子版本时,通常会出现这个错误,例如spring-asmspring-core 。 看看forum.springsource.org/showthread.php?133341

我有同样的问题,并通过从pom.xml删除我的spring-data-jpa依赖项面临它

它已经包含在spring-core依赖中。