Je développe un Java utilisant la dernière version du framework Spring (3.2.2-RELEASE), mais j'ai maintenant un problème au démarrage du projet. L'erreur de détail est
Java.lang.IncompatibleClassChangeError:
La classe org.springframework.core.type.classreading.ClassMetadataReadingVisitor a l'interface org.springframework.asm.ClassVisitor comme super classe.
J'ai fait des recherches sur ce problème sur Internet et sur ce site également, et j'ai obtenu des indices. J'ai supprimé les bibliothèques asm et spring-asm de mon projet, mais cela n'a pas fonctionné. Je vois qu'il existe une autre interface ClassVisitor qui est définie dans rt.jar du JRE par défaut. Est-ce la raison de ce conflit?
Mais je reconnais que:
class ClassMetadataReadingVisitor extends ClassVisitor implements ClassMetadata {
private String className;
....
}
ClassMetadataReadingVisitor
fait référence à class org.springframework.asm.ClassVisitor
(déjà disponible dans le package Spring-core), alors comment peut-il entrer en conflit avec l'interface com.Sun.xml.internal.ws.org.objectweb.asm.ClassVisitor
de JRE? Je ne sais pas comment cela peut arriver?
Voici le stack-strace complet:
[ERROR 13:49:39] (ContextLoader:319) - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\workspace\.projects\myproject\trunk\target\myproject\WEB-INF\classes\com\myproject\action\AuthenticationAction.class]; nested exception is Java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.Java:281)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.Java:242)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.Java:84)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.Java:73)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.Java:1438)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.Java:1428)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:185)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:139)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:108)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.Java:493)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.Java:390)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:334)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:174)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:209)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:180)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:125)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.Java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.Java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:451)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:112)
at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4205)
at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4704)
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:799)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:779)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:601)
at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:675)
at org.Apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.Java:601)
at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:502)
at org.Apache.catalina.startup.HostConfig.start(HostConfig.Java:1315)
at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:324)
at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:142)
at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1061)
at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:840)
at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1053)
at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:463)
at org.Apache.catalina.core.StandardService.start(StandardService.Java:525)
at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.lang.reflect.Method.invoke(Unknown Source)
at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:289)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)
Caused by: 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)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2818)
at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1159)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1647)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2818)
at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1159)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1647)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.Java:63)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.Java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.Java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.Java:257)
... 47 more
[ERROR 13:49:39] (ContextLoader:319) - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\workspace\.projects\myproject\trunk\target\myproject\WEB-INF\classes\com\myproject\action\AuthenticationAction.class]; nested exception is Java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.Java:281)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.Java:242)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.Java:84)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.Java:73)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.Java:1438)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.Java:1428)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:185)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:139)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.Java:108)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.Java:493)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.Java:390)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:334)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:174)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:209)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:180)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:125)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.Java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.Java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:451)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:112)
at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4205)
at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4704)
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:799)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:779)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:601)
at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:675)
at org.Apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.Java:601)
at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:502)
at org.Apache.catalina.startup.HostConfig.start(HostConfig.Java:1315)
at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:324)
at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:142)
at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1061)
at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:840)
at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1053)
at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:463)
at org.Apache.catalina.core.StandardService.start(StandardService.Java:525)
at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.lang.reflect.Method.invoke(Unknown Source)
at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:289)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)
Caused by: 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)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2818)
at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1159)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1647)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2818)
at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1159)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1647)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.Java:63)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.Java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.Java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.Java:257)
... 47 more
Et voici la liste des dépendances:
activation-1.0.2.jar
antlr-2.7.7.jar
antlr-runtime-3.3.jar
arena-0.1.jar
asm-3.3.1.jar (removed from classpath)
aspectjweaver.jar
bcprov-jdk16-145.jar
c3p0-0.9.1.2.jar
cglib-2.1_3.jar
com.springsource.org.Apache.xml.serializer-2.7.1.jar
commons-beanutils-1.8.3.jar
commons-codec-1.7.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-digester-2.1.jar
commons-fileupload-1.2.2.jar
commons-httpclient-3.1.jar
commons-io-2.4.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-pool-1.6.jar
commons-vfs-patched-1.9.1.jar
commons-vfs2-2.0.jar
csv.jar
dom4j-1.6.1.jar
fop-1.0.jar
gson-2.2.2.jar
htmlcleaner-2.4.jar
httpclient-4.2.3.jar
httpcore-4.2.3.jar
httpcore-nio-4.2.3.jar
httpmime-4.2.3.jar
jaxen-1.1-beta-6.jar
jcifs-1.3.15.jar
jdom-1.0.jar
jersey-client-1.8.jar
jersey-core-1.8.jar
jersey-multipart-1.0.3.144640.jar
jersey-server-1.8.jar
jersey-spring-1.8.jar
joda-time-2.2.jar
joda-time-jsptags-1.1.1.jar
jodconverter-2.2.2.jar
json-lib-2.4-jdk15.jar
json-simple-1.1.1.jar
json-taglib-0.4.1.jar
jsoup-1.7.2.jar
jstl-1.2.jar
juh-3.2.1.jar
jurt-3.2.1.jar
log4j-1.2.17.jar
mail-1.4.5.jar
persistence-api-1.0.2.jar
poi-3.9.jar
poi-ooxml-3.9.jar
poi-ooxml-schemas-3.9.jar
poi-scratchpad-3.9.jar
postgresql-9.1-901-1.jdbc4.jar
quartz-2.1.6.jar
ridl-3.2.1.jar
scribe-1.3.3.jar
slf4j-api-1.7.5.jar
slf4j-jdk14-1.7.5.jar
spring-aop-3.2.2.RELEASE.jar
spring-asm-3.1.4.RELEASE.jar (removed from classpath)
spring-beans-3.2.2.RELEASE.jar
spring-context-3.2.2.RELEASE.jar
spring-context-support-3.2.2.RELEASE.jar
spring-core-3.2.2.RELEASE.jar
spring-expression-3.2.2.RELEASE.jar
spring-jdbc-3.2.2.RELEASE.jar
spring-tx-3.2.2.RELEASE.jar
spring-web-3.2.2.RELEASE.jar
spring-webmvc-3.2.2.RELEASE.jar
standard-1.1.2.jar
stax-api-1.0.1.jar
stringtemplate-4.0.2.jar
unoil-3.2.1.jar
velocity-1.7.jar
velocity-tools-2.0.jar
wmf2svg-0.9.3.jar
xalan-2.7.1.jar
xercesImpl-2.11.0.jar
xml-apis-1.4.01.jar
xmlbeans-2.6.0.jar
xmlgraphics-commons-1.5.jar
xstream-1.4.4.jar
J'ai résolu le même problème en réorganisant les dépendances pom.
J'ai un problème avec org.springframework.security. Je l'ai donc mis à la fin des dépendances.
J'ai résolu mon même problème après avoir généré une dépendance mvn: tree et recherché des versions de printemps plus anciennes dans mon arbre. En effet, il y avait une dépendance à org.springframework: spring-asm: 3.0.7-RELEASE dans mes dépendances.
Si vous utilisez une version à ressort> 3.2.0, vous n'avez plus besoin d'inclure spécifiquement spring-asm car il a été inclus dans spring-core.
Supprimez Spring-asm de votre définition de construction et assurez-vous que le noyau de ressort est là.
Même problème pour moi. J'ai exécuté 'mvn dependency: tree' et j'ai remarqué qu'une ancienne version de spring-aop était introduite, je l'ai donc ajoutée aux exclusions jersey-spring, ce qui a corrigé mon problème:
<dependency>
<groupId>com.Sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>${jersey.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
J'ai eu un problème similaire et la cause principale était une autre librairie Spring incluant Spring-asm 3.1.0 comme dépendance.
Correction de ce problème en excluant le 'spring-asm' de toute configuration dans mon script de construction gradle.
configurations {
all*.exclude group: 'org.springframework', module: 'spring-asm'
}
J'ai rencontré le même problème en essayant d'ajouter la sécurité Spring à l'application. Le problème a été résolu en ajoutant
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
J'ai résolu le problème en ajoutant l'exclusion suivante dans la dépendance au printemps.
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>