如何在運行時獲取當前運行的JVM的可執行文件的位置?我想使用ProcessBuilder類實例化另一個JVM作爲子進程。在運行時確定JVM可執行文件的位置
我知道有java.home
系統屬性,但是這並沒有指定JVM可執行文件的位置。我知道我可以做這樣的事情來獲取路徑:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
此代碼不是獨立於平臺的,因爲Windows可執行文件的名字爲java.exe
,不java
。有沒有辦法讓JVM可執行文件的路徑考慮到平臺的特性?
JAVA_HOME指向JDK而不是JRE。所以如果用戶沒有安裝JDK,那麼你的運氣不好。另外我*做*擁有JDK並且沒有環境變量。還是一切正常。同樣在Windows上,您可以將「.exe」放在要運行程序的文件名上。 – Joey 2010-08-02 22:57:06
通過'java.home'系統屬性,我不是指環境變量;相反,我的意思是存在於'System.getProperties()'中的屬性。我已經驗證JRE具有'java.home'的System屬性。 在Windows中知道「.exe」擴展名是可選的,這很有用。謝謝。 – 2010-08-02 23:00:04
你可以在Windows上做第一個註釋並假設「bin/java.exe」,並假設其他平臺上的「bin/java」。還有「javaw.exe」可以根據你想要做什麼來考慮。 – 2010-08-03 02:35:44