2012-09-28 16 views
2

在Windows系統上,假設你已經安裝有多個JRE和假設你通過明確指定的java.exe的絕對路徑啓動Java,並假設你不依賴於任何環境變量,如JAVA_HOME將JAVA.EXE拿起它從目錄樹下其所還是會依靠一些註冊表設置的「官方」的Java安裝程序創建運行?其中rt.jar中當多個的JRE的系統上安裝用於?

換句話說,什麼是Java用於查找其運行時的算法?您不必在類路徑中指定運行時,並且如果嘗試輸出System.getProperty(「java.class.path」)的內容,則不會顯示運行時。

回答

3

如果你調用C:\Some\Path\Java\jre\bin\java.exe,那麼它將使用C:\Some\Path\Java\jre\lib\rt.jar。它基本上使用..\lib\rt.jar。它沒有做任何花哨的解析或註冊表查詢,只是一個相對路徑引用。

如果你需要找到一個Java應用程序內的參考,您可以使用:

String javaPath = System.getProperty("java.home"); 
File rtJar = new File(javaPath, "lib/rt.jar"); 
+0

我懷疑這是真實的,但不能肯定。我現在已經證明它也是如此。至於系統屬性,這可以從System.getProperty(「java.home」)中看到。 –

相關問題