鼓勵此網誌:0
Exception in thread "main" java.lang.NoClassDefFoundError: .....
每次看到這個錯誤訊息就快抓狂,趁現在頭腦還清楚,用自己最容易看懂的方法記錄下來。
控制台 -> 系統 -> 進階 -> 系統變數
1.
Path
存一些在 cmd 下可以直接輸入的指令,例如:java, javac ....
安裝完 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"
2.
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
-------
記錄
1. 使用 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" 是不行的。
--- 有遇到問題再補充 ---



