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

Spring Boot 2.6.10与3.1.5差异咨询:Maven项目缺失javax包

Spring Boot 3.1.5 升级后 javax.xml.bind.annotation 缺失问题解决

问题原因

Spring Boot 3.x 基于 Jakarta EE 9+ 构建,而 2.x 版本基于传统 Java EE。两者核心差异在于 Java EE 的 javax.* 命名空间被全面迁移至 jakarta.*,Tomcat 也随之从 9.x(兼容 Java EE)升级到 10.1.x(仅兼容 Jakarta EE),因此 3.1.5 版本的 tomcat-embed-core 不再包含任何 javax 开头的 API。

解决方案

1. 迁移代码至 Jakarta API

如果你的项目代码直接使用了 javax.xml.bind.annotation 下的注解(如 @XmlElement、@XmlRootElement 等),需要将所有相关引用替换为 jakarta.xml.bind.annotation 下的对应类:

  • 原:import javax.xml.bind.annotation.XmlElement;
  • 替换为:import jakarta.xml.bind.annotation.XmlElement;

2. 兼容第三方依赖(无法修改源码时)

如果是项目依赖的第三方库仍在使用 javax.xml.bind API,可添加 Jakarta XML Binding 的运行时依赖来提供兼容支持,在 pom.xml 中加入:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <scope>runtime</scope>
</dependency>

或者添加 API 规范与实现的组合依赖:

<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <scope>runtime</scope>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:57:06