SpringBoot2.2.1+Java8执行mvn clean install报javax.xml.bind包不存在错误
问题原因
- 虽然Java 8原生内置JAXB类库,以下场景仍会触发
javax.xml.bind.annotation包找不到的报错:- Maven运行时实际调用的JDK版本高于8(Java 9+已将JAXB从官方JDK中移除),与项目配置的编译版本不一致
- 仅引入JAXB接口包
jaxb-api,缺少实现类依赖,或本地缓存的依赖包损坏 - 本地使用的是精简版OpenJDK 8,官方已移除内置的JAXB实现模块
解决方案
按优先级依次尝试以下操作:
确认Maven使用的JDK版本
命令行执行以下两个命令,确认输出版本均为1.8.x:java -version javac -version若版本不一致,调整系统环境变量的JAVA_HOME配置为Java 8的安装路径,再重新执行构建命令。
补全JAXB完整依赖
替换pom.xml中现有的jaxb-api依赖为以下完整依赖配置,覆盖接口、实现和关联依赖:<!-- JAXB 完整依赖,兼容全版本JDK --> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.1</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>强制更新依赖并构建
执行以下命令强制刷新Maven依赖缓存,避免本地依赖损坏导致的加载失败:mvn clean install -U校验IDE配置(若使用IDE开发)
确认项目的SDK设置、编译级别均为1.8,避免IDE配置覆盖Maven的项目参数。
内容的提问来源于stack exchange,提问作者SHILPA
相关产品推荐
相关产品推荐

