已經配置了很多次jdk了,每次都是安裝網上的教程配的,今天突然想了解了解原理了,整理一下!
參考貼(
http://blog.csdn.net/wkupaochuan/article/details/7462180(講解的不全)
http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html(百度經驗,裡面有詳細的配置過程,後面我就不說了)
)
通常在安裝JDK過後需要配置兩個環境變量:PATH和CLASSPATH(由于windows平台對系統變量的大小寫沒有要求,是以大小寫都可以,但是Linux系統中隻能用大寫)。
也許有人說還有一個JAVA_HOME, 其實這個變量的設定就是起到中轉的作用吧,JAVA_HOME指向我們的JDK安裝目錄,自定義這個變量的目的大概是讓我們比較友善的使用JDK安裝目錄吧(個人了解),是以JAVA_HOME可有可無。
要講PATH和CLASSPATH這兩個系統變量,就得先看一下JDK的根目錄下面的幾個檔案夾了:

其中主要的就是bin、jre、lib三個檔案夾了,
bin:該路徑下存放了JDK的各種工具指令,常用 的有javac、java等;
jre:該路徑下安裝的就是運作java程式所必須的JRE環境;
lib:該路徑下存放的是JDK工具 指令的實際執行代碼程式,該檔案夾下的dt.jar 和tools.jar是工具指令的類檔案(.class);
下面我們就來講一下PATH和CLASSPATH這兩個系統變量:
首先編譯和運作java程式需要兩步驟:
1、将.java源檔案編譯成.class位元組碼;
2、解釋執行與平台無關的位元組碼程式;
這兩步分别用到javac 和java這兩個指令。
當我們運作這兩個指令的時候,計算機是如何找到這兩個指令的呢?也就是如何找到這兩個指令的路徑的?是以我們就要為這樣的工具指令設定路徑,讓計算機能夠自己找到他們。windows作業系統都是根據系統變量PATH來查找指令的,是以我們就将工具指令(bin目錄)的路徑加到path路徑上面,計算機就能找到了(将D:\Java\jdk1.7.0_01\bin加入到path環境變量中):
環境變量中不同路徑之間用分号隔開,Linux下面用冒号隔開。
這樣的話在dos環境裡面運作java、javac等工具指令時,計算機就能自動找到指令所在路徑并執行了。
接下來計算機根據path裡面的路徑找到指令了,但是這個路徑(也就是bin目錄)存放的是工具指令的一個引用(快捷方式吧),具體的工具指令程式是儲存在lib目錄下的,是以這個時候計算機單單找到工具指令還不行,還要找到它的執行體,而這個執行體都是一些java的經過編譯後的.class檔案(lib目錄下的dt.jar和tools.jar),是以我們要設定一個環境變量,将這兩個檔案(即類包dt.jar和tools.jar)路徑放到 環境變量中,以便于計算機能找到執行。
而對于類檔案,java設定了一個環境變量CLASSPATH專門來指向類檔案,計算機根據這個環境變量下面的路徑,就能找到相對應的類檔案并執行了。是以jdk安裝後,要把D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar兩個路徑加入到CLASSPATH中。
而我們通常設定的CLASSPATH路徑前面還有一個點,即完整的CLASSPATH是 .;D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar
這個點是用來幹什麼的呢?(假設有一個已經編譯好了的java檔案Hello.class)
我們執行這個檔案 java Hello 這個時候JRE是到哪裡搜尋這個檔案呢?可能有人說目前路徑下搜尋啊!這是對的,是在目前路徑下搜尋,但是JDK1.4及之前的版本沒有設計這個功能,這意味着即使目前路徑包含着Hello.class這個檔案,在執行 java Hello 這個指令時,系統也找不到Hello這個類。
是以在JDK1.4及之前的版本中需要在ClassPATH環境變量中添加一個點(.),用來告訴JRE需要在目前路徑下搜尋JAVA類。是以CLASSPATH也就有了上面的路徑 (.;D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar)。
總之,classPATH這個環境變量就是用來尋找類的。把相應的類路徑添加進去,系統就能自動檢索到并執行。
在JDK1.5及之後釋出的版本中,可以不用設定CLASSPATH這個環境變量了,因為JRE比以前更智能了,它會自動搜尋目前路徑下的類檔案,而且在使用java的編譯和運作工具時,系統也可以自動加載dt.jar和tools.jar檔案中的java類,是以不再需要設定CLASSPATH環境變量。
但是當我們使用JDK1.5及之後釋出的版本時,如果設定了CLASSPATH這個環境變量,JRE将會按照CLASSPATH環境變量指定的路徑來搜尋java類,而不會自動尋找java類的,是以要自己設定CLASSPATH的話,一定要設定正确,不然運作不了!
未來星開發團隊--狒狒
QQ:9715234