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