java.lang.IncompatibleClassChangeError:class org.springframework.core.type.classreading.ClassMetadataReadingVisitor

我正在通过链接中的相同示例开发Spring MVC JQGrid示例: https : //github.com/nurkiewicz/books 。 当我部署此代码时,我发现以下错误即将发生。

参考错误:

java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_45] at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_45] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_45] at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ~[catalina.jar:7.0.59] at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_45] at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_45] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_45] at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) ~[catalina.jar:7.0.59] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ~[catalina.jar:7.0.59] at org.springframework.core.type.classreading.SimpleMetadataReader.(SimpleMetadataReader.java:63) ~[spring-core-3.2.3.RELEASE.jar:3.2.3.RELEASE] at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80) ~[spring-core-3.2.3.RELEASE.jar:3.2.3.RELEASE] at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102) ~[spring-core-3.2.3.RELEASE.jar:3.2.3.RELEASE] at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:266) ~[spring-context-3.2.3.RELEASE.jar:3.2.3.RELEASE] 

当我用Google搜索此错误时,我发现BeanDefinitionStoreException无法读取候选组件类 ,但此链接的解决方案对我不起作用。 请帮忙解决这个问题。

的pom.xml

   4.0.0 com.blogspot.nurkiewicz books jqGrid CRUD jqGrid CRUD with Spring MVC backend war 1.0.0-SNAPSHOT  1.7 3.2.3.RELEASE 3.1.4.RELEASE UTF-8     org.springframework spring-webmvc ${org.springframework.version}   org.springframework spring-jdbc ${org.springframework.version}   org.springframework spring-orm ${org.springframework.version}   org.springframework.data spring-data-jpa 1.3.2.RELEASE    org.springframework.security spring-security-web ${org.springframework-security.version}   org.springframework.security spring-security-config ${org.springframework-security.version}  <!--  org.hibernate.javax.persistence hibernate-jpa-2.1-api 1.0.0.Draft-16  -->   cglib cglib 3.0    org.slf4j slf4j-api 1.7.5   ch.qos.logback logback-classic 1.0.13   org.slf4j jul-to-slf4j 1.7.5   org.slf4j log4j-over-slf4j 1.7.5   org.slf4j jcl-over-slf4j 1.7.5   commons-logging commons-logging 1.1.3 provided   commons-lang commons-lang 2.6   commons-io commons-io 2.4   com.google.guava guava 14.0.1    org.codehaus.jackson jackson-mapper-asl 1.9.11   javax.servlet servlet-api 2.5 provided   javax.servlet.jsp jsp-api 2.1 provided   javax.servlet jstl 1.2    junit junit 4.11 test   org.springframework spring-test ${org.springframework.version} test   org.easytesting fest-assert-core 2.0M10 test    com.h2database h2 1.3.172   org.eclipse.persistence org.eclipse.persistence.jpa 2.5.0   com.googlecode.flyway flyway-core 2.1.1    books   org.apache.tomcat.maven tomcat7-maven-plugin 2.0   org.apache.maven.plugins maven-compiler-plugin 2.3.2  ${java.version} ${java.version} true      

这是因为你在classpath中有不同版本的Spring jar文件。

我首先建议你使用最新的Spring 3.2.x系列补丁:

 3.2.16.RELEASE 

然后使用Spring框架“Bill Of Materials”来对齐版本:

    org.springframework spring-framework-bom ${org.springframework.version} pom import    

您可以使用${org.springframework.version}删除其他行。

您的stacktrace表示Java 8字节码。 在这种情况下升级到Spring版本4或更高版本

您应该使用JDK 7来编译此项目。

如果您在应用程序中使用新的spring-core jar和旧的spring-asm jar,则会发生此exception。 我面临同样的问题,因为我的弹簧jar是4.2,而spring-asm最新是3.1.4。 您可以从库中删除spring-asm jar。 您的申请工作完美。 在exception中你也可以清楚地看到“界面org.springframework.asm.ClassVisitor作为超类”尝试!!