求助:JakartaXmlBindAnnotationModule非Jackson Module子类型的ServiceConfigurationError问题
1. 排除Wildfly自带的Jackson模块
Wildfly 32默认集成的Jackson版本可能与项目依赖的2.15.4存在兼容性问题,尤其是Jakarta XMLBind相关模块。创建或修改jboss-deployment-structure.xml文件,放在项目的WEB-INF(Web项目)或META-INF(Jar项目)目录下,排除服务器自带的Jackson模块,强制使用项目打包的版本:
<jboss-deployment-structure> <deployment> <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.module.jakarta.xmlbind"/> </exclusions> </deployment> </jboss-deployment-structure>
2. 明确Jackson Jakarta XMLBind模块依赖
在pom.xml中直接指定jackson-module-jakarta-xmlbind的版本,确保没有间接引入旧版本模块,同时移除旧的JAXB模块依赖(如jackson-module-jaxb-annotations):
<dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jakarta-xmlbind</artifactId> <version>2.15.4</version> </dependency>
3. 清理Wildfly服务器缓存
停止Wildfly服务后,删除standalone/tmp和standalone/data/content目录下的所有文件,清除缓存的旧类文件,再重新启动服务器并部署项目。
4. 调整类加载顺序
通过jboss-deployment-structure.xml配置,确保项目的Jackson类优先加载,避免服务器自带类与项目类加载器冲突:
<jboss-deployment-structure> <deployment> <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.module.jakarta.xmlbind"/> </exclusions> <dependencies> <module name="deployment.你的项目文件名.war" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>
将你的项目文件名.war替换为实际部署的文件名。
5. 修复服务配置文件冲突
检查项目打包后的META-INF/services/com.fasterxml.jackson.databind.Module文件,确保仅包含com.fasterxml.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationModule条目。如果存在冲突条目,使用maven-shade-plugin合并服务配置文件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> </transformers> </configuration> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者Shikha Shah

