Spring core 3.2.2 + Sécurité de printemps 3.1.4: java.lang.IncompatibleClassChangeError: org.springframework.asm.ClassVisitor
Quand j'ai ajouté Printemps-sécurité 3.1.4 côté de Printemps 3.2.2, j'ai cette vilaine exception ci-dessous. Je l'ai googlé et a obtenu seulement ce lien sur le même message d'erreur:
http://forum.springsource.org/showthread.php?133706-Spring-3-2-0-RELEASE-breaks-with-JBoss-7
pointant vers le printemps JIRA expliquant que le printemps asm est maintenant au printemps-core.
https://jira.springsource.org/browse/SPR-10134
J'ai pensé que j'ai besoin d'exclure printemps-asm à partir du printemps de sécurité en quelque sorte.
Ici est l'exception que j'ai eu:
java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:791)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:112)
org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:85)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1051)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:955)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
javax.servlet.GenericServlet.init(GenericServlet.java:160)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:722)
source d'informationauteur Mano Kovacs
Vous devez vous connecter pour publier un commentaire.
Ensuite, j'ai trouvé ceci:
http://www.mkyong.com/mongodb/spring-asm-dependency-issue-in-spring-data/
avec un problème similaire au printemps de données. L'exclusion de la pom.xml fonctionne tout aussi bien:
Je partage la solution pour les autres qui reçois la même erreur!
Le problème, c'est que le Printemps de Sécurité 3.1.4 dépend de Printemps 3.0.7, de sorte qu'il finit par tirer au printemps-aop 3.0.7, qui tire au printemps-asm 3.0.7. Ce que vous voulez faire est d'utiliser maven est
dependencyManagement
section de forcer tout le Printemps des inclusions d'utiliser la dernière version, comme suit:Vous pouvez vérifier que vous avez réussi à l'écart de toutes les dépendances en exécutant
mvn dependency:tree
.Par exemple, avant de
dependencyManagement
monmvn dependency:tree
de sortie a été:Avis en particulier les trois premières lignes, où
spring-aop
apportespring-asm
. Après l'ajout de suffisamment dedependencyManagement
déclarations, nous disposons maintenant de:Avis comment
spring-asm
n'est même pas inclus plus, puisque le nouveauspring-aop
ne le nécessite pas.C'est une façon claire de gérer votre Printemps versions que les exclusions dans la réponse ci-dessus, il va s'appliquer à toute autre 3e partie dépendances vous pourriez ajouter que la référence de Printemps.
Ajouter les dépendances suivantes dans le pom.xml: