运行mvn clean install时报package javax.xml.bind不存在错误如何解决
报错原因
- 核心原因是Java 9及之后的版本将原本包含在JDK中的*Java EE模块(包含javax.xml.bind相关包)*从默认集成项中移除,如果你本地或项目指定的编译JDK版本≥9,且没有显式引入JAXB相关依赖,就会触发该报错。
- 次要排查点:如果项目明确使用JDK8,大概率是Maven的compiler插件配置的target/source版本和实际运行的JDK版本不匹配,或是本地JDK8的发行版为精简阉割版,移除了内置的JAXB模块。
排查处理方案
情况1:项目使用JDK9及以上版本
直接在项目的pom.xml中引入JAXB官方依赖即可:
<dependencies> <!-- JAXB API --> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <!-- JAXB 实现包 --> <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> <!-- JAXB注解依赖项 --> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies>
情况2:项目明确使用JDK8
- 首先执行
mvn -v检查Maven绑定的JDK版本是否为1.8,如果不符合要求,修改环境变量中的JAVA_HOME指向JDK8的安装路径。 - 检查pom.xml中maven-compiler-plugin的配置是否正确指定了编译版本:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
- 若以上配置都正常仍报错,说明所用JDK8发行版移除了内置JAXB,直接引入情况1中的依赖即可解决。
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

