個人操作
- 由于上傳git將target目錄也上傳了
- 所以在本地刪除target之后再重新同步更新動作
- 然后直接在vscode工具上
run
本地項目 - 運行報錯,報錯信息如下
報錯信息
分析原因
1. 工具配置
用 VS Code 的“Run”運行按鈕時,是否會自動編譯,取決于你的 VS Code Java 擴展與啟動配置。默認情況下,“Run”并不等同于執行 mvn compile 或 mvn package,所以刪掉 target 后不一定會自動重建。
2. 本質
本質原因就是:Java 項目需要先編譯生成字節碼(class/jar),再運行。你刪了 target 后,如果運行流程沒有觸發“重新編譯”,運行期就找不到需要的類,導致 NoClassDefFoundError 等錯誤。
3. 關鍵點
Java 先編譯(javac 或通過 Maven/Gradle)→ 產出到 target/classes 或 build/classes。
運行(java、IDE 啟動、Spring Boot)依賴這些已編譯的產物作為 classpath。
VS Code 的“Run”按鈕并不必然執行編譯階段,需配置 preLaunchTask 或使用能自動構建的運行方式。
解決方案
方案一(永久解決方案)
打開 .vscode/tasks.json,添加:
Maven 項目
: { “label”: “mvn compile”, “type”: “shell”, “command”: “mvn -q -DskipTests compile” }
Gradle 項目
(任選其一): { “label”: “gradle classes”, “type”: “shell”, “command”: “gradle classes” }
打開 .vscode/launch.json,在對應配置里加: “preLaunchTask”: “mvn compile” 或 “preLaunchTask”: “gradle classes”
方案二(臨時方案)