2010-06-22 254 views

回答

35

rt =運行時間

它包含所有的java運行時庫。 (必備)

46

它包含Java運行時環境中提供的所有類。

如果您的類路徑中沒有它,您將無法訪問任何需要使用的類,如java.lang.String或java.io.File。

4

運行時(rt.jar)包含構成Java SE的所有(大部分..)java類。它會自動添加到類路徑中。

7

它包含Java內置類。 rt也許代表Runtime。沒有它,你不能運行Java程序:)

+0

我想,你想說的話, 「你不能跑......」。 – 2010-06-22 07:21:25

+1

是的,當然:) – 2010-06-22 07:21:56

5

rt.jar是所有java包所在的地方。例如,如果一個類文件調用java.util包,則JVM可以在rt.jar中查找它,從而使其能夠正確運行。

附註:不要亂用它。

10

交叉編譯是您必須明確使用它的一種情況。例如,如果您使用的是Java 8,並且想要在拒絕Java 8擴展的同時編譯Java 7,則可以使用這些擴展。所以,你可以嘗試:

javac -source 1.7 Main.java 

但隨後javac會說:warning: [options] bootstrap class path not set in conjunction with -source 1.7,因爲它可能會產生錯誤共同編制針對不同版本的JCL的。

所以,你需要設置rt.jar有:

javac -source 1.7 -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar Main.java 

這是在問:warning: [options] bootstrap class path not set in conjunction with -source 1.5

7

的rt.jar代表運行時JAR,包含自舉類,我的意思是所有的核心類Java API。我發現很多Java程序員不知道什麼是rt.jar?並經常與rt.jar文件的作用或爲什麼我們在Java中使用rt.jar文件相混淆?毫不奇怪,這個名字有點神祕。

該文件總是駐留在JRE的lib目錄中,至少在Windows和Linux中。在MacOSX中,它駐留在不同的位置,也有不同的名稱,即classes.jar,但這只是在JDK 1.7之前。從Java 7發行版Apple停止發佈Java,如果單獨安裝,它將與rt.jar具有相同的名稱。

許多開發人員認爲在rt.jar中包含他們的類來解決類路徑相關的問題,但這是一個壞主意。你不應該惹惹rt.jar,它包含JVM所信任的類文件,並且沒有嚴格的安全檢查來加載其它類文件。

2

它包含所有標準的JDK類。在JVM的類加載過程中,這是第一個加載的類,它由引導類加載器(所有類加載器的父類)完成。

您可以通過編譯Java程序使用此選項檢查自己:

javac -verbose:class program.java 

才能看到加載的類的序列。

樣品:

[Loaded sun.security.timestamp.TimestampToken from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] 
[Loaded sun.security.util.CertConstraintParameters from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] 
[Loaded sun.security.util.ECKeySizeParameterSpec from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] 
[Loaded sun.security.util.ECUtil from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] 
[Loaded sun.security.util.Pem from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] 
相關問題