1. 程式人生 > >設定jdk環境變數時lib中的rt.jar ,dt.jar ,tool.jar是什麼 ,作用是什麼

設定jdk環境變數時lib中的rt.jar ,dt.jar ,tool.jar是什麼 ,作用是什麼

網上找了很長時間,就是有點搞不清楚,這JDK的配置CLASSPATH中的dt.jar和tools.jar這兩個檔案到底是幹什麼的,有人說這個dt.jar是關於swing的 開啟這個包確實可以看到和swing有關的類,說是如果用到swing就要配置這classpath,但是rt.jar中的swing呢 這個不才是真正的包含swing類庫嗎? 還有就是這兩個包到底是用作開發的類庫,還是JDK中的JAVAC等程式執行要的類庫。 如果不路徑這兩個包對我們開發的程式中有什麼影響?

——————————————————————————————————————————————————————

答:dt.jar和tools.jar是兩個java最基本的包,裡面包含了從java最重要的lang包到各種高階功能如視覺化的swing包,是java必不可少的。
而path下面的bin裡面都是java的可執行的編譯器及其工具,如java,javadoc等,你在任意的資料夾下面執行cmd鍵入javac,系統就能自動召見java的編譯器就是歸功於這個環境變數的設定 

rt.jar是JAVA基礎類庫,dt.jar是關於執行環境的類庫,tools.jar是工具類庫 

設定在classpath裡是為了讓你 import * 
--------------------------------------------------------------- 

web系統都用到tool.jar 

你用winrar看看裡面是什麼內容啦 
--------------------------------------------------------------- 

1. 
rt.jar 預設就在 根classloader的載入路徑裡面 放在claspath是多此一舉 
不信你可以去掉classpath裡面的rt.jar 

然後用 java -verbose XXXX 的方式執行一個簡單的類 就知道 JVM的系統根Loader的路徑裡面 

不光rt.jar jre/lib下面的大部分jar 都在這個路徑裡  

2. 

tools.jar 是系統用來編譯一個類的時候用到的 也就是javac的時候用到 

javac XXX.java 

實際上就是執行  

java -Calsspath=%JAVA_HOME%/lib/tools.jar xx.xxx.Main XXX.java  

javac就是對上面命令的封裝 所以tools.jar 也不用加到classpath裡面 

3. 
dt.jar是關於執行環境的類庫,主要是swing的包 你要用到swing時最好加上 


dt.jar好像是swing的一些什麼類,Eclipse開發環境預設的JRE也沒有包括它。應該沒用。
tools.jar應用伺服器用來編譯JSP檔案,應用伺服器自己會載入,不需要自己設定。


關於path和classpath的含義: 
1.path變數的含義就是系統在任何路徑下都可以識別java,javac命令 
2.classpath變數的含義是告訴jvm要使用或執行的class放在什麼路徑上,便於JVM載入class檔案,.;表示當前路徑,tools.jar和dt.jar為類庫路徑。如果不用Swing裡面的東西,可以不加dt.jar。 tools.jar裡面是最基本的工具類,比如javac,不加是無法做開發的。 


 1. rt.jar 預設就在 根classloader的載入路徑裡面 放在claspath是多此一舉 不信你可以去掉classpath裡面的rt.jar 然後用 java -verbose **X 的方式執行一個簡單的類 就知道 JVM的系統根Loader的路徑裡面 不光rt.jar jre/lib下面的大部分jar 都在這個路徑裡  
 2. tools.jar 是系統用來編譯一個類的時候用到的 也就是javac的時候用到 javac **.java 實際上就是執行 java -Calsspath=%JAVA_HOME%/lib/tools.jar xx.**.Main **.java javac就是對上面命令的封裝 所以tools.jar 也不用加到classpath裡面 
 3. dt.jar是關於執行環境的類庫,主要是swing的包 你要用到swing時最好加上 


dt.jar是關於執行環境的類庫,主要是swing的包
tools.jar是關於一些工具的類庫
rt.jar包含了jdk的基礎類庫,也就是你在java doc裡面看到的所有的類的class檔案


編譯和執行需要的都是toos.jar裡面的類 , 分別是  
  sun.tools.java.*;  
  sun.tools.javac.*;