Java 11报错:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

时间:2022-06-01 21:42:15

Java 11 删除了Java EE 模块,其中包括了

java.xml.bind (JAXB) - REMOVED

jaxb在Java各个版本支持如下:

  • Java 8 - 可用
  • Java 9 - 废弃
  • Java 10 - 废弃
  • Java 11 - 移除

解决方法

方法一:可以通过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中的Jakarta XML Binding来解决此问题,而不是使用旧的JAXB模块。

<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>