A.war - >是使用的版本1.2.6.RELEASE(內部使用彈簧4.1.7發佈,傑克遜2.4.6)簡單的彈簧啓動REST應用春天開機傑克遜自動配置鏈接錯誤wildfly
B. jar - >是一個wildfly9共享模塊(存儲在wildfly/modules中),它使用包含spring框架的maven陰影插件(沒有spring引導意思,使用舊的添加spring項目依賴關係的方法)以及與上面相同版本的jackson類打包。 (它的陰影,因爲非彈簧和非容器項目可以添加此jar在他們的類路徑和使用它 - 它的工作原理)
A.war具有maven dependency scope <provided> on B.jar
和jboss-deployment-structure.xml與<dependencies> <module name = "B"> </dependencies>
A.war部署失敗,出現以下錯誤。
注意:當我刪除B.jar jboss依賴關係時,A.war部署得非常好。所以添加B.jar導致這個問題。如果我不使用A.war中的spring引導(也就是說,如果我直接使用簡單的spring webmvc和上下文依賴關係),A.war也可以完美部署
任何人都可以解釋我下面的錯誤說,我如何調查更多?
據我對wildlfy類加載的理解,A.war和B.jar應該加載到不同的模塊類加載器中,A.war是否抱怨B.jar的傑克遜類在錯誤中出現?
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