2010-07-02 60 views
0

在我的C++應用程序中獲取java.home位置的最佳方法是什麼?現在我從註冊表中獲得它,但想知道是否有更好/更簡單/更清潔的方法。獲取java.home在C++中的位置

感謝, 塞爾

+0

註冊表可能是您在Windows上最好的選擇。出於好奇,爲什麼你需要Java主目錄的位置? – Tom 2010-07-02 17:28:20

+0

@Tom:這不是很容易解釋,但我會嘗試。我有這個啓動JAR文件的AIR 2應用程序。爲了啓動該文件,我需要java.exe,因爲它可以安裝在不同的位置,我想檢查它的第一個位置。 – sjespers 2010-07-02 17:36:48

+0

據我所知,除了JAVA_HOME之外,註冊表是唯一的其他方式。 – Powerlord 2010-07-02 18:03:46

回答

1

如果JAVA_HOME設置爲Java主目錄。如果不是val將爲空。

char* val = getenv("JAVA_HOME");

+0

設置JAVA_HOME環境變量似乎不是默認Java安裝過程的一部分,因此在許多情況下它不會存在。 – sjespers 2010-07-02 17:37:48

+0

這是錯的。 JAVA_HOME和java.home是非常不同的野獸。查看JVM的代碼。 – ingyhere 2013-05-14 03:57:32

0

如果你在Unix/Linux上,也許你可以做「哪個java」。如果您需要C++的幫助,請參閱How to execute a command and get output of command within C++ using POSIX?

如果您使用的是Windows系統,則會出現一個「which.bat」,這是我過去成功使用的一個「which.bat」,雖然它不是很好。你必須爲它谷歌。

希望這可以指出你在正確的方向!

0

在Windows安裝的System32目錄中經常會有javaw的副本,因此getenv("windir")和連接"\System32\javaw.exe"

然後第二個選擇是打開文件瀏覽器對話框來選擇javaw.exe的位置。