JDK環境變量中dt.jar、tools.jar變量值的做用

JAVA_HOMEjava

變量名:JAVA_HOME  
變量值:/usr/java/jdk-9.0.4  
用途:定義一個變量,供其餘地方使用

PATH安全

變量名:Path  
變量值:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
用途:讓系統在任何路徑下均可以識別java、javac、javap等命令

CLASSPATHjvm

變量名:CLASSPATH  
變量值:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
用途:告訴jvm要使用或執行的class放在什麼路徑上,便於JVM加載class文件,.;表示當前路徑,tools.jar和dt.jar爲類庫路徑

CLASSPATH詳解ide

tools.jar  
工具類庫(編譯和運行等),它跟咱們程序中用到的基礎類庫沒有關係。咱們注意到在Path中變量值bin目錄下的各個exe工具的大小都很小,通常都在27KB左右,這是由於它們實際上僅僅至關因而一層代碼的包裝,這些工具的實現所要用到的類庫都在tools.jar中,用壓縮軟件打開tools.jar,你會發現有不少文件是和bin目錄下的exe工具相對性的,查看圖一。固然,若是tools.jar的功能只有這些的話,那麼咱們根本不用把它加入到CLASSPATH變量中,由於bin目錄下的工具本身能夠完成對這些類庫的調用,所以tools.jar應該還有其餘的功能。在裏面還能夠看到有Applet和RMI等相關的文件,所以tools.jar應該仍是遠程調用等必須的jar包。tools.jar的其餘做用能夠查看其餘資料。  

dt.jar  
運行環境類庫,主要是Swing包,這一點經過用壓縮軟件打開dt.jar也能夠看到。若是在開發時候沒有用到Swing包,那麼能夠不用將dt.jar添加到CLASSPATH變量中。  

CLASSPATH中的類庫是由Application ClassLoader或者咱們自定義的類加載器來加載的,這裏固然不能包括基礎類庫,若是包括基礎類庫的話,並用兩個不一樣的自定義類加載器去加載該基礎類,那它獲得的該基礎類就不是惟一的了,這樣便不能保證Java類的安全性。  

基本類庫和擴展類庫rt.jar  
        基本類庫是全部的 import java.* 開頭的類,在 %JAVA_HOME%\jre\lib 目錄下(如其中的 rt.jar、resource.jar ),類加載機制提到,該目錄下的類會由 Bootstrap ClassLoader 自動加載,並經過親委派模型保證了基礎類庫只會被Bootstrap ClassLoader加載,這也就保證了基礎類的惟一性。  
        擴展類庫是全部的 import javax.* 開頭的類,在 %JAVA_HOME%\jre\lib\ext 目錄下,該目錄下的類是由Extension ClassLoader 自動加載,不須要咱們指定。  
        rt.jar 默認就在根classloader的加載路徑裏面,放在claspath也是畫蛇添足
相關文章
相關標籤/搜索