2016-01-20 51 views

回答

1

1)的rt.jar代表運行,幷包含所有的核心Java運行時環境編譯的類文件。

2)您必須在類路徑中包含rt.jar,否則您無法訪問核心類,例如java.lang.String,java.lang.Thread,java.util.ArrayList或java.io.InputStream以及Java API中的所有其他類。您可以通過使用WinRAR或WinZip客戶端打開它,實際上可以看到rt.jar中的內容。您可以看到它不僅包含所有Java API,而且還包含com包中指定的內部類。

3)在windows中,rt.jar將始終位於$ JAVA_HOME/jre/lib下,其中$ JAVA_HOME指向JDK安裝目錄。即使你不安裝JDK並只安裝JRE,你也會看到它在完全相同的位置,你不會在$ JAVA_HOME/lib目錄中找到rt.jar。順便說一下,在MacOSX上,它被稱爲classes.jar,位於/ System/Library/Frameworks // Classes目錄下。在以下截圖中,您可以看到rt.jar位於Windows 8中的JRE lib目錄中。

4)rt.jar是所有Java程序包駐留的位置。例如,如果一個類文件需要引用java.util.concurrent包中的一個類,例如ConcurrentHashMap,則JVM將在rt.jar中查找它,從而使其能夠正確運行。

5)Java程序員問的另外一個問題是,我在哪裏可以找到包含在rt.jar中的類的源代碼?好吧,如果你已經安裝了JDK,而不是JRE,那麼你可以在$ JAVA_HOME/src.zip文件中找到所有的源代碼。順便說一句,sun。*源也包含在src.zip中,但這是專有的閉源Oracle代碼。我還建議你將這個JAR文件包含在你的Eclipse中,這樣你只需要輸入Ctrl + T和類的名字就可以查看任何JDK類的源代碼,其餘部分將被Eclipse的Java類型搜索功能所關注。

6)瞭解rt.jar最重要的一件事就是JAR文件中的所有類都爲JVM所知,這意味着JVM不會執行從加載其他JAR時執行的所有檢查任何其他地點。這是由於各種性能原因而完成的,這就是爲什麼這些類由自舉或原始類加載器加載的原因。不要試圖將你的類文件包含在rt.jar中,因爲它不提供Java的建議。它也與任何安全性妥協。

7)如果您對Java平臺使用的不同二進制和JAR文件感興趣,請查看此圖。你可以看到JDK有三個主文件夾bin,lib和jre。 bin目錄包含所有二進制可執java.exe運行Java程序,javac.exe編譯Java程序等。lib包含tools.jar和dt.jar。 jre文件夾再次包含bin和lib目錄。它位於這個lib目錄中的rt.jar駐留。順便說一下,這些文件和文件夾都做了什麼,請查看Oracle官方網頁。它們非常全面和描述性。

enter image description here

這是所有關於Java中的rt.jar文件。現在你知道rt.jar的目的是什麼,爲什麼你不應該搞砸它。你可以在$ JAVA_HOME/jre/lib目錄下找到這個JAR文件,我鼓勵你自己去看看。

瞭解更多:http://javarevisited.blogspot.com/2015/01/what-is-rtjar-in-javajdkjre-why-its-important.html#ixzz3xkhLYtjP

+1

他並沒有問rt.jar中,我從未有過,包括在我的CLASSPATH rt.jar中近20年。 – EJP

相關問題