You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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的自动配置不会再被触发,对应的找不到类的错误也会自动消失

后续操作

  1. 调整好包结构后,执行Maven命令清理并编译项目,刷新IDE依赖:
mvn clean compile
  1. 重新启动Spring Boot项目,启动失败和.web包标红的问题应该都会解决。

内容的提问来源于stack exchange,提问作者Vladyslav Melnikov

火山引擎 最新活动