根据发布说明,Java 11 删除了 Java EE 模块:
java.xml.bind (JAXB) - REMOVED
- Java 8 - 好的
- Java 9 - 已弃用
- Java 10 - 已弃用
- Java 11 - 已移除
有关更多信息,请参阅JEP 320。
您可以通过使用 Java EE 技术的替代版本来解决此问题。只需添加包含您需要的类的 Maven 依赖项:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
Jakarta EE 8 更新(2020 年 3 月)
您可以使用Jakarta EE 8中的Jakarta XML Binding来解决此问题,而不是使用旧的 JAXB 模块:
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>
Jakarta EE 9 更新(2020 年 11 月)
使用 Jakarta XML Binding 3.0的最新版本:
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>3.0.0</version>
<scope>runtime</scope>
</dependency>
注意: Jakarta EE 9 采用了新的 API 包命名空间jakarta.xml.bind.*
,所以更新 import 语句:
javax.xml.bind -> jakarta.xml.bind