本地运行Spring Boot项目遇jakarta.servlet.ServletRequest类找不到问题求助
问题根源
你遇到的NoClassDefFoundError: jakarta/servlet/ServletRequest是版本依赖冲突导致的:
- 项目用了Spring Boot 2.7.10(对应Spring Framework 5.3.x),这个版本依赖的是
javax.servlet包下的Servlet API; - 但你手动引入了
spring-web:6.0.0(属于Spring Framework 6.x),该版本已切换到jakarta.servlet包下的API,两者不兼容,导致运行时找不到类。
解决步骤
1. 移除冲突的spring-web依赖
删掉POM里单独引入的spring-web:6.0.0,同时取消spring-boot-starter-web里对spring-web的排除——spring-boot-starter-web已经包含了和当前Spring Boot版本匹配的spring-web,不需要手动指定或排除。
修改后的spring-boot-starter-web依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </exclusion> <!-- 移除对spring-web的排除规则 --> </exclusions> </dependency>
2. 清理冲突的JAXB依赖
POM里同时引入了javax.xml.bind和jakarta.xml.bind的JAXB依赖,Spring Boot 2.7.x只需保留javax版本即可,删掉jakarta.xml.bind-api依赖:
<!-- 删除该冲突依赖 --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>2.3.3</version> </dependency>
3. 移除重复依赖
POM里gson依赖出现了两次,删掉其中一个重复项。
4. 刷新Maven并重新构建
执行命令清理缓存并重新构建:
mvn clean install -U
完成以上操作后重新运行项目,即可解决类找不到的问题。
内容的提问来源于stack exchange,提问作者snehalg
相关产品推荐
相关产品推荐

