當你在命令列執行 java HelloWorld 時,若出現 Exception in thread "main" java.lang.NoClassDefFoundError,通常是因為類路徑或命名不符。本文整理出五大關鍵檢查步驟,助你快速定位問題根因。
Java 強制要求公開類名與 .java 檔名完全一致(含大小寫)。例如 public class HelloWorld 的檔名必須是 HelloWorld.java,否則編譯雖能通過,執行時卻找不到類。
入口方法必須為 public static void main(String[] args)。若使用 IDE 開發較少出錯;若用文字編輯器(如 UltraEdit)手寫,請逐字對照複製,避免拼寫錯誤。
javac 後接檔名:javac HelloWorld.javajava 後接類名(不含副檔名):java HelloWorld新手常誤打 java HelloWorld.class 導致此錯誤。
除 JDK 安裝時的系統變數外,建議自行規劃一個存放類檔的目錄(如 D:\class),並加入 CLASSPATH:
set CLASSPATH=%CLASSPATH%;D:\class
將編譯產生的 HelloWorld.class 複製到該目錄,再執行 java HelloWorld 即可正常載入。
若類屬於套件 sony.test.HelloWorld,類檔必須置於 D:\class\sony\test\ 目錄下,執行時使用完整類名:
java sony.test.HelloWorld
掌握上述五點,基本能消除 99% 的 NoClassDefFoundError。善用 IDE(如 IntelliJ IDEA、Eclipse)更能從源頭避免此類低級錯誤,讓你專注於業務邏輯開發。