Spring Boot 启动失败?10种常见报错及解决方案

Spring Boot 项目启动时报错,是每个Java开发者都会遇到的事。这篇文章整理了10种最常见的启动报错,附解决方案。

1. Failed to configure a DataSource

报错信息:

Failed to configure a DataSource: 'url' attribute is not specified

原因: 项目中引入了数据库依赖,但没有配置数据源。

解决:

  • 如果不需要数据库,在启动类上排除自动配置:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • 如果需要数据库,检查 application.yml 中的数据源配置是否正确。

2. Port was already in use

报错信息:

Web server failed to start. Port 8080 was already in use.

原因: 端口被占用。

解决:

  • 找到占用端口的进程并关闭,或在配置中换一个端口:

server:
  port: 8081

3. 数据库驱动版本不匹配

报错信息:

java.lang.AbstractMethodError: com.mysql.cj.jdbc.Driver.getMajorVersion()

原因: MySQL驱动版本与数据库版本不匹配。

解决:

  • MySQL 8.x 使用较新版本的驱动:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

4. 包扫描路径不对

现象: 项目能启动,但访问接口返回404,或者Autowired注入失败。

原因: 启动类的位置不对,默认扫描启动类所在包及其子包。

解决:

  • 确保启动类放在最外层包下

  • 或者手动指定扫描路径:

@SpringBootApplication(scanBasePackages = {"com.example.controller", "com.example.service"})

5. Maven依赖冲突

报错信息:

java.lang.NoSuchMethodError: com.google.common.collect.FluentIterable

原因: 项目中有多个版本的同一个jar包冲突。

解决:

  • 在 pom.xml 中用 <exclusions> 排除冲突的依赖:

<dependency>
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>

6. Lombok相关的报错

报错信息:

java: cannot find symbol symbol: method getXxx()

原因: IDE没有安装Lombok插件,或者没有启用注解处理器。

解决:

  • IDEA安装Lombok插件:File → Settings → Plugins → 搜索Lombok

  • 启用注解处理器:Settings → Build → Compiler → Annotation Processors → Enable

7. 配置文件格式错误

现象: 启动时报 YamlPropertySourceLoader 相关错误。

原因: yml文件的缩进或格式不正确。

解决:

  • yml对缩进敏感,检查每层的空格数

  • 冒号后面必须有一个空格

8. Whitelabel Error Page

现象: 启动成功,但访问页面显示Whitelabel Error Page。

原因: 没有配置Controller,或者Controller路径不对。

解决:

  • 确认Controller类上加了 @RestController@Controller

  • 确认 @RequestMapping 中的路径正确

9. 内存不足

报错信息:

java.lang.OutOfMemoryError: Java heap space

解决:

  • 在IDEA或命令行中加大JVM内存:

java -Xms512m -Xmx1024m -jar your-app.jar

10. 端口被系统保留

报错信息:

BindException: Cannot assign requested address

解决:

  • Windows上某些端口被系统保留,换一个端口试试。

总结

遇到启动报错不要慌,先看错误信息的第一行,找到真正的异常原因,再对症下药。上面这10种覆盖了日常开发中90%的启动报错场景。

如果对你有帮助,欢迎点赞、评论、关注【张老师技术栈】,持续分享 Java/Python/爬虫 实战干货。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值