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-core和ClassVisitor
加载的。
请检查使用Maven的dependency:tree
命令来查看依赖的jar子。
在Spring版本> 3.2.0中,不再需要明确包含spring-asm
因为它已经包含在spring-core
。
从构build定义中删除spring-asm
,并确保spring-core
在那里。
当使用不兼容的jar子版本时,通常会出现这个错误,例如spring-asm
和spring-core
。 看看forum.springsource.org/showthread.php?133341
我有同样的问题,并通过从pom.xml
删除我的spring-data-jpa
依赖项面临它
它已经包含在spring-core
依赖中。