在CSDN論壇裡, 經常碰見有人問JDK的路徑設定問題, 這裡系統講一下, 希望對新手有些幫助
經常有人問: "我用javac編譯過了, 為什麼用java執行的時候出現 java.lang.NoClassDefFoundError ?"
這就是環境變量設定的問題.
首先先澄清一個概念, java.exe接受的參數是類名, 而不是檔案名, 我見過有人用 "java Hello.class" 來執行程式, 當然會出錯.
那麼, java是如何知道在哪裡加載類呢?
這就是CLASSPATH環境變量的作用了, java會搜尋CLASSPATH變量以及 -cp 和 -classpath 參數制定的所有目錄(包括.jar和.zip檔案中的目錄), 找到對應的類. 每次指定 -cp 參數是很麻煩的, 是以一般設定CLASSPATH 環境變量.
在 Windows 2000 / XP / .Net Server 中, 進入"系統屬性--進階--環境變量", 建立環境變量名為CLASSPATH, 值為 ".;C:/JDK1.5/lib/dt.jar;C:/JDK1.5/jre/lib/rt.jar"
其中, "." 代表目前目錄, rt.jar是最基本的Java運作庫, dt.jar是輔助開發工具庫
另外, 為了使用友善, 還可以在PATH變量中加入 C:/JDK1.5/bin, 這樣運作javac.exe 和 java.exe 就不用加上完整的路徑名了.
這裡C:/JDK1.5是我的JDK路徑, 請更改為你自己對應的路徑. 而且, 一般我們會添加一個JAVA_HOME變量, 設定為JDK路徑, 因為 Tomcat, Ant 等不少 Apache 項目都會要求此變量.
在安裝了ant等Java工具, 庫等後, 一般按照說明在CLASSPATH中加入對應的運作庫以友善運作
最後還有一個小問題, 關于含有包的類的調用, 應在包的頂目錄調用java, 而不是具體類的目錄.
比如 C:/test/com/softboys/HelloWorld.class 這個類, 應該在C:/test下調用 "java com.softboys.HelloWorld" 而 不是在 C:/test/com/softboys/ 調用"java HelloWorld" .