Spring Boot 啟動錯誤排查教程之找不到或無法加載主類的三種解決方案
寫在前面:這篇文章適合誰?
這篇文章主要寫給 正在開發(fā)或?qū)W習(xí) Spring Boot 的同學(xué),尤其是剛接觸 Spring Boot、在課程設(shè)計或畢業(yè)設(shè)計階段頻繁導(dǎo)入項目的人。
我最近在一臺 Windows 11 + JDK 8 / JDK 17 的開發(fā)環(huán)境中,多次遇到 Spring Boot 項目啟動時報錯:
錯誤: 找不到或無法加載主類 xxx.Application
這個問題在IDE 中看似簡單,但實際排查時非常浪費時間。在完整解決并復(fù)盤之后,我把關(guān)鍵排查點整理成一篇文章,希望能幫你少走彎路。
一、問題現(xiàn)象與錯誤本質(zhì)
常見報錯信息如下:
Error: Could not find or load main class com.example.demo.DemoApplication Caused by: java.lang.ClassNotFoundException
從 JVM 的角度來看,這個錯誤只有一個核心含義:
啟動時指定的主類,在當前 classpath 中不存在。
但“為什么不存在”,才是我們真正要解決的問題。
二、第一步:確認 Spring Boot 主啟動類是否規(guī)范
這是最基礎(chǔ)、也是最容易被忽略的一步。
1?? 主啟動類必須滿足的條件
請確認你的啟動類同時滿足以下要求:
- 位于
src/main/java目錄下 - 包名與實際目錄結(jié)構(gòu)一致
- 包含
@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);
}
}?? 真實踩坑點:
我曾在重構(gòu)包名后,只改了文件夾路徑,卻忘了同步修改package聲明,IDE 不報紅,但啟動直接失敗。
三、第二步:檢查 IDE 的運行配置(高頻問題)
在我的經(jīng)驗中,至少一半的“找不到主類”問題,都出在運行配置上,而不是代碼本身。
2.1 IntelliJ IDEA 中的排查方式
依次檢查:
- 點擊右上角運行配置
- 打開 Run / Debug Configurations
- 查看當前 Spring Boot 配置項
重點關(guān)注兩個地方:
- Main class
- 是否是當前項目真實存在的
Application類
- 是否是當前項目真實存在的
- Module
- 是否選擇了正確的模塊(多模塊項目尤其容易出錯)
?? 推薦做法
直接刪除原有運行配置,然后:
- 右鍵點擊
Application類 - 選擇
Run
讓 IDEA 自動生成配置,成功率最高。
2.2 Eclipse 中的排查方式
在 Eclipse 中,這個問題更常見,建議直接使用“重建思路”:
- 打開
Run Configurations - 刪除舊的
Java Application或Spring Boot App - 重新右鍵主啟動類 →
Run As
四、第三步:清理構(gòu)建緩存并重新編譯
當代碼和運行配置都沒問題,但錯誤依舊存在時,十有八九是構(gòu)建緩存出了問題。
3.1 Eclipse:使用 Clean 功能
Project → Clean → Clean all projects
這個操作會清理舊的 .class 文件和構(gòu)建緩存,對 Eclipse 用戶非常關(guān)鍵。
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)
建議:
遇到問題時,先看一遍完整控制臺日志,而不是只盯著最后一行報錯。
回到問題本身
在文章開頭我們提到,這個錯誤的本質(zhì)是:
JVM 在 classpath 中找不到你指定的主類。
只要你圍繞以下三個點去排查:
- 主啟動類是否真實存在
- IDE 是否指向了正確的類
- 編譯結(jié)果是否真的生成
這個問題幾乎都能解決。
結(jié)語
我長期整理 Spring Boot / Java 畢業(yè)設(shè)計 / 課程設(shè)計常見問題,并將踩坑過程寫成系列文章,主要面向計算機專業(yè)在校生和初學(xué)者。
到此這篇關(guān)于Spring Boot 啟動錯誤排查實戰(zhàn):找不到或無法加載主類的三種解決方案的文章就介紹到這了,更多相關(guān)springboot啟動錯誤找不到或無法加載主類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java JVM字節(jié)碼指令集總結(jié)整理與介紹
本節(jié)將會著重介紹一下JVM中的指令集、Java是如何跨平臺的、JVM指令集參考手冊等內(nèi)容。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
詳解設(shè)計模式中的proxy代理模式及在Java程序中的實現(xiàn)
代理模式主要分為靜態(tài)代理和動態(tài)代理,使客戶端方面的使用者通過設(shè)置的代理來操作對象,下面來詳解設(shè)計模式中的proxy代理模式及在Java程序中的實現(xiàn)2016-05-05
Java中AuthorizationFilter過濾器的功能
本文主要介紹了Java中AuthorizationFilter過濾器的功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-02-02
Java Spring中Quartz調(diào)度器詳解及實例
這篇文章主要介紹了Java Spring中Quartz調(diào)度器詳解及實例的相關(guān)資料,需要的朋友可以參考下2017-02-02
性能爆棚的實體轉(zhuǎn)換復(fù)制工具MapStruct使用詳解
這篇文章主要為大家介紹了性能爆棚的實體轉(zhuǎn)換復(fù)制工具MapStruct使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Java中Integer.parseInt和Integer.valueOf區(qū)別小結(jié)
在Java中,Integer.parseInt()和Integer.valueOf()都可以將字符串轉(zhuǎn)換為整數(shù)類型,那么他們有哪些區(qū)別呢,本文就來詳細的介紹一下2023-09-09

