根据release-notes,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>
雅加达EE 8更新(2020年3月)
不使用旧的JAXB模块,您可以通过使用Jakarta EE 8中的Jakarta XML Binding来解决这个问题:
<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>
雅加达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>
Note: Jakarta EE 9采用新的API包命名空间jakarta.xml.bind.*
,因此更新import语句:
javax.xml.bind -> jakarta.xml.bind