rt.jar的必要性?爲什麼我們在java項目中使用rt.jar?
回答
rt =運行時間
它包含所有的java運行時庫。 (必備)
它包含Java運行時環境中提供的所有類。
如果您的類路徑中沒有它,您將無法訪問任何需要使用的類,如java.lang.String或java.io.File。
運行時(rt.jar)包含構成Java SE的所有(大部分..)java類。它會自動添加到類路徑中。
它包含Java內置類。 rt
也許代表Runtime
。沒有它,你不能運行Java
程序:)
rt.jar是所有java包所在的地方。例如,如果一個類文件調用java.util包,則JVM可以在rt.jar中查找它,從而使其能夠正確運行。
附註:不要亂用它。
交叉編譯是您必須明確使用它的一種情況。例如,如果您使用的是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
的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所信任的類文件,並且沒有嚴格的安全檢查來加載其它類文件。
它包含所有標準的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]
- 1. 爲什麼我們在Java項目中使用Strategy Facade
- 2. 爲什麼java不能讀取rt.jar?
- 3. 爲什麼我們在jQuery中使用「({})」?
- 4. 爲什麼我們不能在Java中使用指針?
- 5. par文件爲什麼我們在java開發中使用它
- 6. 爲什麼我們在JAVA中使用這段代碼?
- 7. 爲什麼我們在java中使用「?super T」?
- 8. 爲什麼我們只在Java中使用(String args [])?
- 9. 爲什麼我們在Java中使用堆棧和隊列?
- 10. 爲什麼我們不應該在Java中使用
- 11. 爲什麼我們在java logger中使用:: {}
- 12. 爲什麼我們在Java中使用基類
- 13. 在ConstraintLayout中,我們在RelativeLayout中使用'app',我們使用'android'。爲什麼?
- 14. 爲什麼我應該在rt.jar中沒有這門課?
- 15. 爲什麼我們使用Groovy中
- 16. 什麼時候我們應該在Python項目中調用logging.basicConfig?
- 17. 爲什麼我不能在Netbeans中查看Java項目?
- 18. 如何在我的Java項目中使用Maven以及爲什麼?
- 19. 爲什麼我們不得不使用私人?在C + +和Java?
- 20. 爲什麼在項目中使用'assert'? (爲什麼使用它這麼多次)
- 21. 爲什麼我們只使用aurioTouch項目中的第一個緩衝區
- 22. 爲什麼我應該在MVP GWT項目中使用ClientFactory?
- 23. 爲什麼我不能在C#項目中使用VB.NET類庫?
- 24. 爲什麼xercesImpl將自己的XML API帶到我的Maven項目中,而所有的XML API都在rt.jar中?
- 25. Java,爲什麼我們不能使用null作爲包名?
- 26. 裝配需要什麼?爲什麼我們使用它們?
- 27. 爲什麼我們在派生類中使用使用聲明?
- 28. 爲什麼我們在Java中使用接口作爲主要概念?
- 29. 爲什麼我們需要Java NIO Selector?
- 30. 爲什麼我們在iphone
我想,你想說的話, 「你不能跑......」。 – 2010-06-22 07:21:25
是的,當然:) – 2010-06-22 07:21:56