首先安裝jdk于C,安裝后目錄為:C:\Program Files\Java\jdk1.6.0,然后右鍵我的電腦,選擇高級--->環(huán)境變量,配置如下:
JAVA_HOME=C:\Program Files\Java\jdk1.6.0;
path=%JAVA_HOME%\bin;
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar;
點(diǎn)擊確定完成。
HelloWorld.java經(jīng)典測試代碼:
public class HelloWorld{
public static void main(String args[]){
System.out.println("hello world !")
}
}
命令行輸入:javac HelloWorld.java
生成HelloWorld.class
命令行輸入:java HelloWorld
屏幕上打印"hello world !"
很多人在初學(xué)Java的時候經(jīng)常會被書中介紹的一堆環(huán)境變量的設(shè)置搞得頭昏腦脹,很多書中都會在初裝JDK的時候讓大家設(shè)置JAVA_HOME環(huán)境變量,在開發(fā)程序的時候設(shè)置CLASSPATH環(huán)境變量,而很多人并不理解這兩個環(huán)境變量的作用,我們來分別進(jìn)行詳細(xì)的闡述。
首先是JAVA_HOME環(huán)境變量,我們先來掌握這個環(huán)境變量的設(shè)置內(nèi)容,JAVA_HOME這個環(huán)境變量的設(shè)置內(nèi)容是JDK的安裝目錄,比如說您的JDK安裝在d:\jdk1.6.0這個目錄下,請您查看一下這個目錄下是不是有一個子目錄bin,bin目錄中是不是有java.exe這個文件,如果是,那么您的JAVA_HOME環(huán)境變量的內(nèi)容應(yīng)該為d:\jdk1.6.0。那么我們設(shè)置這個環(huán)境變量的作用是什么呢?就單獨(dú)的java開發(fā)而言,這個環(huán)境變量并沒有任何作用,這就是很多根據(jù)書上的描述設(shè)置好之后,把一本書學(xué)完也沒有用到這個變量,所以很是不理解。
其實(shí)JAVA_HOME變量最好還是設(shè)置一下。首先,我們?yōu)榱四軌蚓幾g和運(yùn)行java程序,需要在PATH環(huán)境變量中把java.exe所在的目錄設(shè)置為PATH變量的一部分,目的是為了能夠通過命令行運(yùn)行javac和java命令成為可能,當(dāng)你在命令行中輸入javac ...或者java ...的時候,如果提示你一個錯誤:'javac' 不是內(nèi)部命令或外部命令,也不是可運(yùn)行的程序或批處理文件。這時候說明操作系統(tǒng)沒有找到你通過命令行輸入的javac這個命令,為什么呢?因?yàn)椴僮飨到y(tǒng)并 不知道你的javac.exe這個文件在哪里,所以無法執(zhí)行對應(yīng)的文件。那么為了能夠讓操作系統(tǒng)找到這個可執(zhí)行文件,我們就需要把javac.exe這個可執(zhí)行文件所在的目錄作為PATH環(huán)境變量的一部分設(shè)置起來,這樣當(dāng)你在命令行輸入一個命令的時候,操作系統(tǒng)就會自動搜索PATH變量中所指定的所有目錄了。在Windows系統(tǒng)中PATH變量中的所有路徑采用分號分割,如果在Linux系統(tǒng)中采用冒號分割。另外說明一點(diǎn),如果你設(shè)置好了環(huán)境變量,在命令行中還是出現(xiàn)同樣的錯誤,那么有兩種可能,一種就是你的設(shè)置不正確,另一種就是你的設(shè)置沒有生效,一般你可以關(guān)閉命令行窗口再重新打開就可以了。這對這個設(shè)置,以剛才的目錄為例,那么PATH變量中的內(nèi)容就是...;d:\jdk1.6.0\bin,這時候我們可以借用已經(jīng)設(shè)定過的JAVA_HOME,將PATH的內(nèi)容修改為:...;%JAVA_HOME%\bin,這樣的設(shè)置有一定的好處,當(dāng)你的系統(tǒng)中重新安裝JDK,并改變過目錄的話,你只要修改JAVA_HOME的內(nèi)容就可以了,PATH則不需要修改。此外,JAVA_HOME變量還會有一些其他用途,比如Eclipse這個IDE,它本身是由java程序編寫的,那么在運(yùn)行的時候必然需要虛擬機(jī)的存在,所以Eclipse在啟動時需要查找虛擬機(jī),如果有JAVA_HOME這個變量,那么 Eclipse就會利用這個變量找到虛擬機(jī)的路徑。所以雖然開始JAVA_HOME環(huán)境變量可以不設(shè)置,但是還是建議大家為以后考慮而設(shè)置上。
我們繼續(xù)來談?wù)揅LASSPATH的問題,很多書上在講解java程序的時候建議大家設(shè)置CLASSPATH這個環(huán)境變量,我們這里不建議大家設(shè)置。原因我們會在稍后的時候看到。講到CLASSPATH,我們首先來看編寫java程序時一直在用的兩個命令javac和java。
javac的命令語法是這樣的:
javac <選項(xiàng)> <源文件>
我們常用的情況是這樣的:
javac -classpath <類路徑> <要編譯的java源文件>
這里的類路徑輸入什么呢?這里的類路徑是指要編譯的java源文件中所用的非java的基礎(chǔ)API中的類在那個目錄下,路徑可以是多個目錄,用分號隔開 來。比如說我們要編譯App.java這個文件,而這個文件中用到了com.util這個包中的MyDate這個類,現(xiàn)在我們假設(shè)MyDate這個類存在目錄是:d:\mylib\com\util\MyDate.class,那么我們?nèi)绾尉幾gApp這個類呢?我們的命令如下:
javac -classpath d:\mylib App.java
注意這里的classpath的內(nèi)容,我們只是指定路徑到package所在目錄,并不能把package一起指定進(jìn)去,而且MyDate.class必須在com\util這個目錄中,因?yàn)檫@個類定義了package為com.util。好了現(xiàn)在你對javac中的classpath明白了嗎?
我們再來看java這個命令,這個命令的語法是這樣的:
java [選項(xiàng)] 類 [參數(shù)]
比如說以上面的例子,我們假設(shè)App這個類位于com.app這個package中,它的存放目錄是:d:\dev\myapp\com\app\App.class,那么我們該如何運(yùn)行這個類呢?命令如下:
java -classpath d:\dev\myapp;d:\mylib com.app.App
從命令中我們可以看到,在classpath后面我們指定兩個目錄,分別是App這個類的package所在的目錄和MyDate這個類的package 所在的目錄,這里的類路徑要給定的是要運(yùn)行的類和這個類用到的所有類的package所在的目錄,多個目錄之間用分號隔離開來,最后指定要運(yùn)行的類的時候必須加上package。
好了到這里你應(yīng)該徹底掌握了編譯java程序和運(yùn)行java程序的訣竅了吧。如果我們在系統(tǒng)環(huán)境變量中設(shè)置了CLASSPATH的話,在命令行中通過java運(yùn)行的時候如果再不指定CLASSPATH參數(shù),那么就會導(dǎo)致java虛擬機(jī)只是按照CLASSPATH環(huán)境變量中的目錄搜索類,而不在你的當(dāng)前目錄下搜索類,結(jié)果自然會出現(xiàn)Exception in thread "main" java.lang.NoClassDefFoundError,所以當(dāng)你看到這個錯誤的時候請查看一下你的系統(tǒng)環(huán)境變量,如果沒有設(shè)置 CLASSPATH,那么在檢查一下你的當(dāng)前目錄。為了確保萬無一失,按照上面講述的例子進(jìn)行操作是不會發(fā)生任何錯誤。