詳細說明JDK環境變數中dt.jar、tools.jar等變數值的作用(結合ClassLoader)
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/18547959
學習Java的人都要經歷配置JDK環境變數這一步,安裝好JDK後,我們一般會做如下配置:
1.開啟我的電腦--屬性--高階--環境變數
2.新建環境變數JAVA_HOME 和CLASSPATH
變數名:JAVA_HOME
變數值:C:\Program Files\Java\jdk1.7.0
變數名:CLASSPATH
變數值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3. 選擇“環境變數”中變數名為“Path”的環境變數,雙擊該變數,把JDK安裝路徑中bin目錄的絕對路徑,新增到Path變數的值中。
變數名:Path
變數值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
很多人都知道path變數的含義就是讓系統在任何路徑下都可以識別java、javac、javap等命令,而classpath變數的含義是告訴jvm要使用的class所存放的具體路徑。但這種說法太籠統,下面我們來詳細看下各變數值的含義。
對於Path變數就不用多說了,因為該變數的bin目錄下存放了各種包裝好的工具,因此將此目錄加入到Path變數中,便可以在命令列方式下讓系統在任何路徑下都可以識別這些工具所對應的命令。
下面重點看下CLASSPATH變數中的各項變數值的含義:
- tools.jar:工具類庫,它跟我們程式中用到的基礎類庫沒有關係。我們注意到在Path中變數值bin目錄下的各個exe工具的大小都很小,一般都在27KB左右,這是因為它們實際上僅僅相當於是一層程式碼的包裝,這些工具的實現所要用到的類庫都在tools.jar中,用壓縮軟體開啟tools.jar,你會發現有很多檔案是和bin目錄下的exe工具相對性的,如下圖:
- dt.jar:執行環境類庫,主要是Swing包,這一點通過用壓縮軟體開啟dt.jar也可以看到。如果在開發時候沒有用到Swing包,那麼可以不用將dt.jar新增到CLASSPATH變數中。
- 當前目錄:CLASSPATH變數中的“.”便代表當前目錄,即類載入器會從Java原始碼所在的目錄中去尋找Class檔案。
介紹完這三個環境變數後,你會發現,居然沒有基本類庫(指所有的Java.*開頭的類)和擴充套件類庫(如javax.*開頭的類),也就是我們程式中import的那些東東所在的jar包。如果讀過我前面的類載入機制一文,你應該會注意到,CLASSPATH中的這些類都是由Application ClassLoader或者我們自定義的類載入器來載入的,這裡當然不能包括基礎類庫,如果包括基礎類庫的話,並用兩個不同的自定義類載入器去載入該基礎類,那它得到的該基礎類就不是唯一的了,這樣便不能保證Java類的安全性。
實際上,這些基礎類庫都在%JAVA_HOME%\jre\lib目錄下(如其中的rt.jar、resource.jar),類載入機制一文中也有提到,該目錄下的類(在jar包中)會由Bootstrap ClassLoader自動載入,並通過親委派模型保證了基礎類庫只會被Bootstrap ClassLoader載入,這也就保證了基礎類的唯一性。
另外,擴充套件類庫在%JAVA_HOME%\jre\lib\ext目錄下,該目錄下的類是由Extension ClassLoader來載入的,有時候我們也要import這裡面的類,但是並沒有基礎類庫用的頻繁。同樣,Extension ClassLoader也會自動到該目錄下找擴充套件類,而不需要我們指定。
相關文章
- jdk環境變數JDK變數
- J2SE - JDK環境變數的說明和設定JDK變數
- ubuntu JDK 環境變數UbuntuJDK變數
- 配置JDK環境變數JDK變數
- jdk環境變數配置JDK變數
- JDK配置環境變數JDK變數
- jdk環境變數的配置JDK變數
- Oracle中的替換變數,&變數名,&&變數名說明Oracle變數
- 配置jdk環境變數win10教程_win10jdk環境變數如何配置JDK變數Win10
- JDK和Java環境變數的配置JDKJava變數
- 環境變數詳解變數
- JDK各版本環境變數配置JDK變數
- JDK13環境變數配置JDK變數
- jdk安裝,環境變數配置JDK變數
- linux配置jdk環境變數LinuxJDK變數
- java JDK環境變數設定JavaJDK變數
- java jdk 設定環境變數JavaJDK變數
- nls引數、環境變數以及函式等起作用的順序!變數函式
- win10怎麼配置jdk環境變數_window10jdk環境變數配置步驟Win10JDK變數
- postman 變數 環境 過濾等Postman變數
- Java新手_如何配置jdk的環境變數JavaJDK變數
- Bash 中的環境變數變數
- JDK1.8環境變數設定JDK變數
- JDK 1.6環境變數如何設定?JDK變數
- JDK安裝及環境變數配置JDK變數
- linux安裝java JDK,tomcat,maven等環境變數LinuxJavaJDKTomcatMaven變數
- mysql 變數說明MySql變數
- Linux中jdk的安裝和環境變數的配置LinuxJDK變數
- 常用的DOS命令和配置JDK環境變數JDK變數
- 環境變數變數
- mac OS X下配置jdk環境變數MacJDK變數
- .NET Core 環境變數詳解變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- 再說mysql中的變數賦值MySql變數賦值
- 乾貨|JDK下載安裝與環境變數配置圖文教程【超詳細】JDK變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- java語言環境jdk的安裝和環境變數的配置JavaJDK變數
- OpenMP 環境變數使用總結變數