You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至Jakarta EE时Jackson-Module-Jaxb-Annotation抛出异常

问题原因及解决办法

根本原因

你用错了Jackson对应Jakarta EE的JAXB模块artifactId。jackson-module-jaxb-annotations是专门适配旧JEE(javax命名空间)的版本,即便升级到2.17.1,它依然会依赖并调用javax.xml.bind相关类;而适配Jakarta EE的模块有单独的artifactId:jackson-module-jakarta-xmlbind-annotations。

解决步骤

  1. 替换Jackson JAXB模块依赖
    在Maven的pom.xml中,移除原有的jackson-module-jaxb-annotations依赖,替换为Jakarta版本:

    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
        <version>2.17.1</version>
    </dependency>
    
  2. 清理并确认依赖

    • 运行mvn dependency:tree检查依赖树,确保没有javax.xml.bind:jaxb-api这类旧依赖被引入。如果有,在对应依赖中添加排除规则:
      <exclusion>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
      </exclusion>
      
    • 确认jakarta.xml.bind:jakarta.xml.bind-api(你用的4.0.2版本)是唯一的JAXB API依赖。
  3. 修正代码中的导入
    检查项目代码里的import语句,将所有javax.xml.bind.*替换为jakarta.xml.bind.*,比如:

    • 替换import javax.xml.bind.annotation.XmlRootElement;为import jakarta.xml.bind.annotation.XmlRootElement;
  4. 服务器环境适配(如果使用应用服务器)
    如果你部署在WildFly、TomEE等服务器上,确保使用的是支持Jakarta EE的服务器版本(比如WildFly 27+、TomEE 9+),避免服务器自带的旧JEE类库干扰应用的类加载。

内容的提问来源于stack exchange,提问作者Michael Stirling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:13:13