在java中,我試圖訪問我以前在Mac電腦上運行的兩個環境變量(運行Yosemite)。我爲兩個變量設置了值:JAVA_HOME和R_HOME。在設置R_HOME時,我通過編輯完成了:〜/ Library/launchagents/environment.plist。Mac環境變量不適用於java運行時間類
在Mac上使用終端,我可以使用'printenv'命令並獲取兩個變量的值。
當我運行在Eclipse中我的Java應用程序,我可以用得到的JAVA_HOME值:
System.out.println("javahome: " + System.getProperty("java.home"));
我用下面的代碼來列出可用的環境變量,以我的Java應用程序(可用值的列表這段代碼輸出既不包括JAVA_HOME也不R_HOME):
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
我的應用程序將需要是獨立的,因此設置了Eclipse運行配置中的環境變量不會有幫助。此外,我的應用程序在運行時不會知道R_HOME的值;值必須已經進行設置,以便應用程序可以在運行時訪問並使用該值來啓動一個可執行文件,如:
ProcessBuilder pb = new ProcessBuilder("$R_HOME/library/Rserve/libs/Rserve");
Process p = pb.start();
所以,我的問題是:如何將我的Java應用程序訪問的價值R_HOME環境變量。要麼我需要一種新的方法來設置變量,以便它可供JVM使用,或者我需要一個新的Java方法來調用以訪問該值。
你有t在啓動Java應用程序時設置變量? 'java -jar app.jar -Dr.home = $ R_HOME' – andy
@andy。感謝您考慮這個問題。該場景是,多個用戶將經歷安裝R,設置R_HOME,然後下載並安裝Java應用程序的過程。 Java應用程序本身將由用戶機器上的現有Java應用程序啓動。我正在構建的Java應用程序將要求用戶在運行之前已經設置了R_HOME。 –