Error updating database. Cause: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
1.报错介绍
1.1 我的环境
- JDK11
- SpringBoot 2.3.7
1.2 错误发生场景
当我在使用 MyBatis-Plus 进行MySQL相关操作的时候发生了以上的报错,通过观察报错,发现是有关 JAXB 相关的报错
- JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 。而在 java 6/7 / 8 时关于这个API 都是捆绑在一起的。
因为我一直是使用 JDK11 版本,所以我并不打算降低我的 JDK 版本,所以在 JDK9 之后就需要添加 Maven 相关的依赖,如果不是 Maven 项目就需要添加对应的 JAR 包来解决这个问题了
2.问题解决
2.1 方法一:添加 Maven 依赖(最常用的形式)
<!--引入Jaxb,开始-->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.2.10-b140310.1920</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!--引入Jaxb,结束-->
2.2 方法二:添加 JAR 包
-
javax.activation-1.2.0.jar
-
jaxb-api-2.3.0.jar
-
jaxb-core-2.3.0.jar
-
jaxb-impl-2.3.0.jar
下载上面这些文件并复制到libs文件夹下, 添加到Build Path中,重新运行即可。