天天看點

JDK路徑設定全解

在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" .