Spring Boot应用启动失败求助:web包未找到及ApplicationContext初始化异常问题
问题排查与解决方案
我来帮你梳理下这个启动失败的问题,从日志和代码来看,核心原因其实很明确,咱们一步步解决:
1. 启动类放在默认包引发的扫描异常
日志最开头的警告已经给出关键提示:
** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
Spring Boot的@SpringBootApplication注解默认会扫描当前类所在包及其子包的组件,但如果你的启动类SpringClient没有放在任何自定义包下(也就是默认包),它会错误地扫描所有类,包括Spring自身的核心包(比如org.springframework)。这会触发很多你不需要的自动配置类,比如日志里提到的R2DBC相关配置——而这些配置依赖的类你并没有引入对应依赖,所以就出现了io/r2dbc/spi/ValidationDepth not found的错误。
同时,这种混乱的扫描逻辑也会导致IDE无法正确识别Spring Web相关依赖,出现你看到的.web包标红的情况。
修正方法:
给启动类添加自定义包声明(Java包名惯例用全小写),比如匹配你的groupId改成sk.pipes:
package sk.pipes; // 新增这行包声明 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringClient { public static void main(String[] argv){ SpringApplication.run(SpringClient.class); } }
然后把这个类放到对应目录结构下:src/main/java/sk/pipes/SpringClient.java
2. 依赖配置验证(辅助确认)
你的pom.xml配置本身没有大问题,不过可以再确认两点:
- Spring Boot 2.6.6是稳定版本,和你使用的Java 17完全兼容
spring-boot-starter-web已经包含了Web核心依赖,不需要额外添加其他Web相关包- 解决包扫描问题后,R2DBC的自动配置不会再被触发,对应的找不到类的错误也会自动消失
后续操作
- 调整好包结构后,执行Maven命令清理并编译项目,刷新IDE依赖:
mvn clean compile
- 重新启动Spring Boot项目,启动失败和.web包标红的问题应该都会解决。
内容的提问来源于stack exchange,提问作者Vladyslav Melnikov




