Spring Boot 2.5.5+JBoss 7.3.3 GA下Jackson依赖方法缺失错误求助
问题解决:Jackson XML模块方法缺失导致的NoSuchMethodError
错误详情
[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: Factory method 'formContentFilter' threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig; [cvgDeployer] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'formContentFilter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: Factory method 'formContentFilter' threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig; [cvgDeployer] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: Factory method 'formContentFilter' threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig; [cvgDeployer] Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig;"}}}}}}}}}}}}
原因分析
这个错误是Jackson XML模块(jackson-dataformat-xml)和Jackson Databind版本不匹配,或者JBoss服务器自带的Jackson版本与Spring Boot依赖的版本冲突导致的。coercionConfigDefaults()方法是Jackson 2.12+版本新增的,如果XML模块版本低于2.12,或者服务器中的旧版本Jackson被优先加载,就会出现该方法找不到的问题。
解决步骤
1. 统一Jackson依赖版本
Spring Boot 2.5.5默认依赖Jackson 2.12.5,确保项目中所有Jackson相关依赖(包括jackson-dataformat-xml)都使用这个版本。Maven项目可在pom.xml中锁定版本:
<properties> <jackson.version>2.12.5</jackson.version> </properties> <dependencies> <!-- 其他业务依赖 --> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>${jackson.version}</version> </dependency> </dependencies>
2. 排除JBoss自带的Jackson模块
JBoss 7.3自带Jackson库,会和应用依赖冲突。需在项目src/main/webapp/WEB-INF/jboss-deployment-structure.xml中添加配置,排除服务器端的Jackson模块:
<jboss-deployment-structure> <deployment> <exclude-subsystems> <subsystem name="jackson"/> </exclude-subsystems> <exclusions> <module name="com.fasterxml.jackson.core.jackson-core"/> <module name="com.fasterxml.jackson.core.jackson-databind"/> <module name="com.fasterxml.jackson.core.jackson-annotations"/> <module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8"/> <module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310"/> <module name="com.fasterxml.jackson.module.jackson-module-jaxb-annotations"/> <module name="com.fasterxml.jackson.dataformat.jackson-dataformat-xml"/> </exclusions> </deployment> </jboss-deployment-structure>
3. 检查并清理依赖冲突
用Maven命令查看依赖树,定位冲突的Jackson版本:
mvn dependency:tree | grep jackson
如果发现其他依赖引入了旧版本Jackson,在对应依赖中添加排除规则:
<dependency> <!-- 存在冲突的第三方依赖 --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </exclusion> <!-- 按需排除其他Jackson模块 --> </exclusions> </dependency>
内容的提问来源于stack exchange,提问作者NAGNATH S IPPER
相关产品推荐
相关产品推荐

