SpringBoot啟動報錯找不到或無法加載主類的三種解決方案
前言
這篇文章主要寫給 正在開發(fā)或學習 Spring Boot 的同學,尤其是剛接觸 Spring Boot、在課程設計或畢業(yè)設計階段頻繁導入項目的人。
我最近在一臺 Windows 11 + JDK 8 / JDK 17 的開發(fā)環(huán)境中,多次遇到 Spring Boot 項目啟動時報錯:
錯誤: 找不到或無法加載主類 xxx.Application
這個問題在IDE 中看似簡單,但實際排查時非常浪費時間。在完整解決并復盤之后,我把關鍵排查點整理成一篇文章,希望能幫你少走彎路。
一、問題現(xiàn)象與錯誤本質
常見報錯信息如下:
Error: Could not find or load main class com.example.demo.DemoApplication
Caused by: java.lang.ClassNotFoundException
從 JVM 的角度來看,這個錯誤只有一個核心含義:
啟動時指定的主類,在當前 classpath 中不存在。
但“為什么不存在”,才是我們真正要解決的問題。
二、第一步:確認 Spring Boot 主啟動類是否規(guī)范
這是最基礎、也是最容易被忽略的一步。
主啟動類必須滿足的條件
請確認你的啟動類同時滿足以下要求:
- 位于
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 的運行配置(高頻問題)
在我的經(jīng)驗中,至少一半的“找不到主類”問題,都出在運行配置上,而不是代碼本身。
2.1 IntelliJ IDEA 中的排查方式
依次檢查:
- 點擊右上角運行配置
- 打開 Run / Debug Configurations
- 查看當前 Spring Boot 配置項
重點關注兩個地方:
- Main class:是否是當前項目真實存在的
Application類 - Module:是否選擇了正確的模塊(多模塊項目尤其容易出錯)
推薦做法
直接刪除原有運行配置,然后:
- 右鍵點擊
Application類 - 選擇
Run
讓 IDEA 自動生成配置,成功率最高。
2.2 Eclipse 中的排查方式
在 Eclipse 中,這個問題更常見,建議直接使用“重建思路”:
- 打開
Run Configurations - 刪除舊的
Java Application或Spring 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 自然找不到主類。
五、容易被忽略但很致命的細節(jié)
下面這些問題我都真實踩過坑:
- 項目 JDK 與 IDE JDK 不一致
- 多模塊項目,啟動模塊選錯
pom.xml編譯失敗但未注意控制臺日志- 使用了不兼容的 JDK 版本(例如低版本 Spring Boot + 高版本 JDK)
建議:遇到問題時,先看一遍完整控制臺日志,而不是只盯著最后一行報錯。
回到問題本身
在文章開頭我們提到,這個錯誤的本質是:
JVM 在 classpath 中找不到你指定的主類。
只要你圍繞以下三個點去排查:
- 主啟動類是否真實存在
- IDE 是否指向了正確的類
- 編譯結果是否真的生成
這個問題幾乎都能解決。
以上就是SpringBoot啟動報錯找不到或無法加載主類的三種解決方案的詳細內(nèi)容,更多關于SpringBoot啟動報錯解決的資料請關注腳本之家其它相關文章!
- SpringBoot項目啟動報錯"找不到或無法加載主類"的解決方法
- SpringBoot項目啟動錯誤:找不到或無法加載主類的幾種解決方法
- 解決springboot運行出現(xiàn)錯誤:找不到或無法加載主類com.xxxx.xxxx.Application問題
- SpringBoot項目啟動錯誤:找不到或無法加載主類的三種解決方法
- springboot項目啟動類錯誤(找不到或無法加載主類 com.**Application)
- idea啟動springboot報錯: 找不到或無法加載主類問題
- 解決SpringBoot運行報錯:找不到或無法加載主類的問題
- 解決springboot錯誤:找不到或無法加載主類(配置編碼或者Maven)
相關文章
HashMap在JDK7與JDK8中的實現(xiàn)過程解析
這幾天學習了HashMap的底層實現(xiàn),但是發(fā)現(xiàn)好幾個版本的,代碼不一,很多文章都是舊版本JDK1.6.JDK1.7的?,F(xiàn)在我來分析下JDK7與JDK8中HashMap的實現(xiàn)過程2021-09-09
SpringCloud Gateway自動裝配實現(xiàn)流程詳解
Spring Cloud Gateway旨在為微服務架構提供一種簡單有效的、統(tǒng)一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關,它不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關基本的功能,例如:安全、監(jiān)控/埋點和限流等2022-10-10
SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表
本文主要介紹了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
springmvc使用JSR-303進行數(shù)據(jù)校驗實例
本篇文章主要介紹了詳解springmvc使用JSR-303進行數(shù)據(jù)校驗,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02

