Java環境變數設定、記錄
Exception in thread “main” java.lang.NoClassDefFoundError: ….. 每次看到這個錯誤訊息就快抓狂,趁現在頭腦還清楚,用自己最容易看懂的方法記錄下來。
在 Windows 環境下進入 控制台 -> 系統 -> 進階 -> 系統變數
-
設定 Path
存一些在 cmd 下可以直接輸入的指令,例如:java, javac, ant …. 安裝完 JDK 後,如果有設定好,就不會看到以下錯誤訊息
'java' 不是內部或外部命令、 可執行的程式或批次檔。
Java 方面的設定:在原有的設定裡,加上 Java 安裝目錄下的 bin 資料夾路徑,例如:安裝 JDK 1.6.0_04 版本的預設路徑為 C:\Program Files\Java\jdk1.6.0_04 因此,在 Path 中加入 “;C:\Program Files\Java\jdk1.6.0_04\bin“
重新啟動一個 cmd 輸入 java 或 javac 看看,就不會再有剛剛的錯誤訊息,這邊要注意前面的「;」千萬不可以省略。
P.S. 安裝 ant 也是在 Path 裡加入 ant 安裝目錄下 bin 資料夾路徑。e.g. “C:\ant\bin” -
設定 CLASSPATH
儲存一些 jar 檔的路徑,如果有使用到某個 jar 檔裡面的 packages,在編譯與執行的時候都要先設置 -classpath,例如:javac -classpath .;C:\lib\xxxx.jar HelloWorld.java。可以直接設置在環境變數,就不用每次都要指定 -classpath。
Exception in thread "main" java.lang.NoClassDefFoundError:
看到上面這個錯誤訊息,多半是因為 classpath 沒設定好(搞好久) = = 設定為:“.;C:\Program Files\Java\jdk1.6.0_04\lib\tools.jar;“ 分號後面自己增加要使用的 jar file
P.S. 分號最前面的 「.」 不可遺漏,表示從目前目錄尋找 class -
紀錄:使用 package
例如:透過 package com.test 把 hello.java 產生的 class 檔打包。在 C:\java\ 下編譯 => “javac -d . hello.java”,class 會編譯完會出現在 C:\java\com\test\hello.class,這時候要執行 hello 就必須在 C:\java\ 下透過 “java com.test.hello” 才能執行,直接輸入 “java hello” 或是到 C:\java\com\test\ 下輸入 “java hello” 是不行的。