使用Java 17构建Spring Boot 2.7.12项目遇JAXB类找不到错误
解决Spring Boot 2.7.x + Java 17 下JAXB类找不到的问题
你的问题出在依赖的命名空间不匹配:Spring Boot 2.7.x 仍基于JEE的javax.xml.bind命名空间,而你添加的是Jakarta EE 9+版本的jakarta.xml.bind依赖,两者包路径完全不同,因此无法解决javax/xml/bind/JAXBException的缺失问题。
正确的依赖配置
直接添加javax命名空间的JAXB相关依赖,替换你当前的Jakarta依赖:
<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>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>
或者更简便的方式,使用Spring Boot官方提供的starter,它会自动适配Spring Boot 2.7.x的版本:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jaxb</artifactId> </dependency>
关键说明
- Spring Boot 3.x及以上版本才全面切换到Jakarta EE的
jakarta.*命名空间,而2.7.x属于过渡版本,仍依赖传统的javax.*包。 - 若项目中存在其他依赖引入了Jakarta版本的JAXB,需通过
<exclusions>排除冲突,确保javax版本的依赖被优先加载。
内容的提问来源于stack exchange,提问作者OVERTHETOP
相关产品推荐
相关产品推荐

