运行Spring Boot项目提示'Sources must not be empty'异常如何解决
异常原因
该java.lang.IllegalArgumentException: Sources must not be empty异常是Spring Boot启动时的常见错误,核心原因是Spring容器初始化时没有接收到有效的配置源(通常是主启动类),绝大多数情况都是主启动类的main方法写法错误导致。
常见触发场景
- 主启动类的
SpringApplication.run()方法漏传参数,比如只写了SpringApplication.run();,没有传入主类class和启动参数args - IDE运行配置错误,选择了
org.springframework.boot.SpringApplication本身的main方法作为启动入口,而非你自己写的带@SpringBootApplication注解的项目主类 - 自定义SpringApplication实例启动时,没有调用
sources()/setSources()方法传入配置类,或者传入了空的配置集合
修复方案
- 优先检查主启动类写法,确保写法如下:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class LoginMvcApplication { public static void main(String[] args) { // 必须传入当前主类的Class作为第一个参数,第二个参数为启动入参args,不可缺失 SpringApplication.run(LoginMvcApplication.class, args); } }
- 检查IDE的启动配置,确认启动的主类为上述你自己编写的带
@SpringBootApplication注解的类,而非Spring框架自带的SpringApplication类 - 如果你使用自定义SpringApplicationBuilder的方式启动,必须主动指定配置源:
public static void main(String[] args) { new SpringApplicationBuilder() // 必须添加该行指定主配置类,不可缺失 .sources(LoginMvcApplication.class) .run(args); }
- 修复完成后执行
mvn clean install清理并重新构建项目,再启动即可解决问题。
内容的提问来源于stack exchange,提问作者E.Magdaleno
相关产品推荐
相关产品推荐

