C:\>javac HelloWorld.java
C:\>java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
原始碼正確、編譯通過,執行卻找不到類別。這是初學者最常遇到的 CLASSPATH 配置問題。
C:\jdk130)| 變數名 | 值 | 說明 |
|---|---|---|
| java_home | C:\jdk130 | JDK 安裝根目錄 |
| classpath | .;C:\jdk130\lib\tools.jar;C:\jdk130\lib\dt.jar;C:\jdk130\bin | 首項 . 代表當前目錄,極關鍵 |
| path | C:\jdk130\bin | 讓系統找到 javac/java 指令 |
D:\java 建立 Hello.javacd D:\java → javac Hello.java → 編譯通過java Hello → 正常輸出結果 ✓若原始碼首行加入 package hello;:
javac -d . Hello.java(會在當前目錄產生 hello/Hello.class)java hello.Hello 或 java hello/Hello(在 hello 目錄外層執行)cd hello 進入目錄內執行 java Hello → 仍噴 NoClassDefFoundError: Hello (wrong name: hello/Hello)CLASSPATH 指定類別搜尋根路徑. 讓當前目錄成為搜尋根,故無 package 時在原始碼目錄直呼 java Hello 可行;有 package 時須退至包根目錄上層執行%JAVA_HOME%\bin?. 開頭?