SpringBoot启动报错找不到或无法加载主类的三种解决方案

 更新时间:2026年02月05日 09:05:47   作者:柚子科技  
这篇文章主要为大家详细介绍了SpringBoot项目启动时报错找不到或无法加载主类的三种解决方案,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

前言

这篇文章主要写给 正在开发或学习 Spring Boot 的同学,尤其是刚接触 Spring Boot、在课程设计或毕业设计阶段频繁导入项目的人

我最近在一台 Windows 11 + JDK 8 / JDK 17 的开发环境中,多次遇到 Spring Boot 项目启动时报错:

错误: 找不到或无法加载主类 xxx.Application

这个问题在IDE 中看似简单,但实际排查时非常浪费时间。在完整解决并复盘之后,我把关键排查点整理成一篇文章,希望能帮你少走弯路。

一、问题现象与错误本质

常见报错信息如下:

Error: Could not find or load main class com.example.demo.DemoApplication
Caused by: java.lang.ClassNotFoundException

从 JVM 的角度来看,这个错误只有一个核心含义:

启动时指定的主类,在当前 classpath 中不存在。

但“为什么不存在”,才是我们真正要解决的问题。

二、第一步:确认 Spring Boot 主启动类是否规范

这是最基础、也是最容易被忽略的一步。

主启动类必须满足的条件

请确认你的启动类同时满足以下要求:

  • 位于 src/main/java 目录下
  • 包名与实际目录结构一致
  • 包含 @SpringBootApplication 注解
  • 包含标准的 main 方法

示例代码如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author LLL
 * @since 2026
 */
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

真实踩坑点

我曾在重构包名后,只改了文件夹路径,却忘了同步修改 package 声明,IDE 不报红,但启动直接失败。

三、第二步:检查 IDE 的运行配置(高频问题)

在我的经验中,至少一半的“找不到主类”问题,都出在运行配置上,而不是代码本身

2.1 IntelliJ IDEA 中的排查方式

依次检查:

  • 点击右上角运行配置
  • 打开 Run / Debug Configurations
  • 查看当前 Spring Boot 配置项

重点关注两个地方:

  • Main class:是否是当前项目真实存在的 Application
  • Module:是否选择了正确的模块(多模块项目尤其容易出错)

推荐做法

直接删除原有运行配置,然后:

  • 右键点击 Application
  • 选择 Run

让 IDEA 自动生成配置,成功率最高。

2.2 Eclipse 中的排查方式

在 Eclipse 中,这个问题更常见,建议直接使用“重建思路”:

  • 打开 Run Configurations
  • 删除旧的 Java ApplicationSpring Boot App
  • 重新右键主启动类 → Run As

四、第三步:清理构建缓存并重新编译

当代码和运行配置都没问题,但错误依旧存在时,十有八九是构建缓存出了问题

3.1 Eclipse:使用 Clean 功能

Project → Clean → Clean all projects

这个操作会清理旧的 .class 文件和构建缓存,对 Eclipse 用户非常关键。

3.2 IntelliJ IDEA + Maven 项目

我个人更推荐直接从 Maven 下手:

mvn clean package

重点观察:

  • target/classes 目录下
  • 是否真的生成了 DemoApplication.class

如果 .class 文件都没生成,JVM 自然找不到主类。

五、容易被忽略但很致命的细节

下面这些问题我都真实踩过坑

  • 项目 JDK 与 IDE JDK 不一致
  • 多模块项目,启动模块选错
  • pom.xml 编译失败但未注意控制台日志
  • 使用了不兼容的 JDK 版本(例如低版本 Spring Boot + 高版本 JDK)

建议:遇到问题时,先看一遍完整控制台日志,而不是只盯着最后一行报错。

回到问题本身

在文章开头我们提到,这个错误的本质是:

JVM 在 classpath 中找不到你指定的主类。

只要你围绕以下三个点去排查:

  • 主启动类是否真实存在
  • IDE 是否指向了正确的类
  • 编译结果是否真的生成

这个问题几乎都能解决。

以上就是SpringBoot启动报错找不到或无法加载主类的三种解决方案的详细内容,更多关于SpringBoot启动报错解决的资料请关注脚本之家其它相关文章!

相关文章

  • 深入SQLite多线程的使用总结详解

    深入SQLite多线程的使用总结详解

    本篇文章是对SQLite多线程的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Java中保证线程顺序执行的操作代码

    Java中保证线程顺序执行的操作代码

    本文给大家分享一篇教程关于java线程顺序执行问题,如何保证线程的顺序执行呢?今天通过实例代码给大家详细讲解下,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • HashMap在JDK7与JDK8中的实现过程解析

    HashMap在JDK7与JDK8中的实现过程解析

    这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析下JDK7与JDK8中HashMap的实现过程
    2021-09-09
  • SpringBoot Kafka 整合使用及安装教程

    SpringBoot Kafka 整合使用及安装教程

    这篇文章主要介绍了SpringBoot Kafka 整合使用及安装教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • SpringCloud Gateway自动装配实现流程详解

    SpringCloud Gateway自动装配实现流程详解

    Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等
    2022-10-10
  • SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    本文主要介绍了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • SpringBoot搭建全局异常拦截

    SpringBoot搭建全局异常拦截

    这篇文章主要介绍了SpringBoot搭建全局异常拦截,本文通过详细的介绍与代码的展示,详细的说明了如何搭建该项目,包括创建,启动和测试步骤,需要的朋友可以参考下
    2021-06-06
  • 详解JAVA动态代理

    详解JAVA动态代理

    这篇文章主要介绍了JAVA动态代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java中调用第三方接口的详细代码示例

    Java中调用第三方接口的详细代码示例

    这篇文章主要介绍了Java中调用第三方接口的详细代码示例,文章总结了多种Java进行HTTP请求的方法,每种方法都有其特点和适用场景,从原生到封装,再到声明式客户端,满足了不同复杂度的HTTP请求需求,需要的朋友可以参考下
    2024-12-12
  • springmvc使用JSR-303进行数据校验实例

    springmvc使用JSR-303进行数据校验实例

    本篇文章主要介绍了详解springmvc使用JSR-303进行数据校验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02

最新评论