46

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

项目构建成功,但是当应用程序启动时,由于我的应用程序无法启动,我在日志中收到以下错误。这曾经在几个月前起作用。

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

如果有任何指示或你们需要更多信息,请告诉我。

4

5 回答 5

81

当加载的类 ieClassMetadataReadingVisitor不遵守继承的抽象类或接口 ie 的约定时,会发生此错误ClassVisitor

看起来在加载时上述类的不同版本正在您的案例中加载。

似乎您的应用程序中有新的 spring-core jar 和旧的 spring-asm jar。ClassMetadataReadingVisitor类正在从spring -corespring-asm加载。ClassVisitor

请检查使用 mavendependency:tree命令查看依赖的 jar。

于 2013-04-25T08:15:51.317 回答
45

在 spring 版本 > 3.2.0 中,您不再需要显式包含spring-asm,因为它已经包含在spring-core.

从您的构建定义中删除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

于 2014-01-21T13:16:52.383 回答
7

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

于 2013-04-25T08:19:01.177 回答
0

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

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

于 2016-11-28T23:56:39.833 回答
0

对于那些移至 3.1.x 以上版本的人的更新......正如这个答案所表明的那样,这里不再有单独的spring-asm,所以最好spring-asm完全排除,一旦你在 Spring 版本 3.2.x

于 2018-08-09T11:18:35.667 回答