A.war -> est un simple démarrage de l'application printemps REST en utilisant la version 1.2.6.RELEASE (en interne en utilisant ressort 4.1.7 RELEASE, jackson 2.4.6)démarrage Spring erreur de couplage de configuration automatique jackson wildfly
B. jar -> Est un module partagé wildfly9 (stocké dans wildfly/modules) qui est empaqueté en utilisant maven shaded plugin contenant un framework à ressort (sans ressort de démarrage en utilisant l'ancienne méthode d'ajout de dépendances) et des classes jackson de la même version. (Il est ombragé parce que les projets non-spring et non-container peuvent simplement ajouter ce jar dans leur chemin-classe et l'utiliser - ça marche)
A.war a la dépendance maven scope <provided> on B.jar
et a jboss-deployment-structure.xml avec <dependencies> <module name = "B"> </dependencies>
Le déploiement A.war échoue avec l'erreur ci-dessous.
Remarque: A.war se déploie parfaitement bien lorsque je supprime la dépendance B.jar jboss. L'ajout de B.jar est à l'origine de ce problème. Et si je n'utilise pas le démarrage de printemps dans A.war (signifiant si j'utilise directement le webmvc et les dépendances de contexte simples) avec la dépendance de B.jar jboss, A.war déploie aussi parfaitement
Quelqu'un peut-il m'expliquer ce que le erreur ci-dessous dit et comment puis-je enquêter plus? En ce qui concerne ma compréhension de la gestion de classes wildlfy, A.war et B.jar doivent être chargés dans différents chargeurs de classes de modules. Est-ce que A.war se plaint ici des classes jackson de B.jar dans l'erreur?
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method
"org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.modulesToInstall([Lcom/fasterxml/jackson/databind/Module;)Lorg/springframework/http/converter/json/Jackson2ObjectMapperBuilder;"
the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class,
org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration,
and the class loader (instance of org/jboss/modules/ModuleClassLoader) for resolved class,
org/springframework/http/converter/json/Jackson2ObjectMapperBuilder,
have different Class objects for the type der used in the signature
at org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.configureModules(JacksonAutoConfiguration.java:259)
at org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.jacksonObjectMapperBuilder(JacksonAutoConfiguration.java:186)
at org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$b993caa0.CGLIB$jacksonObjectMapperBuilder$1()
at org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$b993caa0$$FastClassBySpringCGLIB$$5262bf2.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:318)
at org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration$$EnhancerBySpringCGLIB$$b993caa0.jacksonObjectMapperBuilder()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 108 more