2009-02-10 57 views
74

我怎樣才能獲得系統變量的值,它存在於如何在Java中獲得系統變量值?

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

在Java中

編輯
我用System.getenv()方法。

在打印值,如果我給

System.out.println(System.getenv("JAVA_HOME")); 

和它顯示,如果我嘗試同樣由我

System.out.println(System.getenv("DBE")); 
+2

您可以嘗試重新啓動請求進程(在我的情況下是NetBeans)。 – Kotodid 2013-08-29 05:47:30

+1

我觀察到從eclipse重啓選項不起作用。只需關閉應用程序,然後重新啓動。 – Yasin 2016-11-01 13:35:03

回答

4

谷歌說,檢查出getenv()

返回當前系統環境的不可修改的字符串映射視圖。

我不知道系統變量和環境變量有什麼不同,但是,如果你能澄清我可以幫助更多。

+0

我認爲raja的意思是「系統範圍」,而不是「每個用戶」的環境變量。 – Rob 2009-02-10 09:56:07

34

爲了澄清,系統變量與環境變量相同。用戶環境變量是爲每個用戶設置的,每當有不同的用戶登錄時都會有所不同。無論用戶登錄什麼,系統環境變量都是相同的。

要訪問任一個系統範圍內的變量或在Java中的用戶變量的當前值,見下:

String javaHome = System.getenv("JAVA_HOME"); 

有關詳細信息有關環境變量看到此wikipedia page

另外,還要確保你正在嘗試讀取環境變量做一個調用java之前已正確設置:

echo %MYENVVAR% 

您應該看到環境變量的值。如果沒有,您可能需要重新打開shell(DOS)或註銷並重新登錄。

+0

嗨..我已經使用System.getenv()方法..它的打印值,如果我給「System.out.println(System.getenv(」JAVA_HOME「));」它顯示空值,如果我給我創建的系統變量(「System.out.println(System.getenv(」DBE「));」 – raja 2009-02-10 12:20:04

1

您是否設法重啓環境變量?

看來Windows保持它在某種緩存中是環境變量,而重新引導是一種刷新它的方法。我不確定,但可能有不同的方法,但如果你不會經常改變你的變量值,這可能就足夠了。

19

獲取系統/環境屬性時,有一些感興趣的細節。

首先,System.getenv(String)被引入迴路時,然後不贊成。棄用(愚蠢地,IHMO)繼續all the way into JSE 1.4

它得到了re-introduced in JSE 5

這些使用Windows中的環境變量面板進行設置。直到當前虛擬機關閉並且CMD.exe實例退出爲止,對變量所做的更改可能無法獲取。

與環境屬性相反,Java也具有Java系統屬性,可通過System.getProperties()訪問。當虛擬機使用一系列命令行參數啓動時,可以初始化這些變量。例如,對於屬性maxInMemorypagingDirectory的值在下面的命令設置:

 
C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar 

這些性質可以在運行時修改,除非安全政策限制。

5

其實這個變量可以設置或者不是,所以,在Java 8或者更高版本中,它的可空值應該被封裝到一個Optional對象中,這允許真正好的特性。在下面的例子中,我們要去嘗試獲取變量ENV_VAR1,如果它不存在,我們可能會拋出一些自定義異常提醒一下:

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
() -> new CustomCheckedException("ENV_VAR1 is not set in the environment")); 
0

正如sombody如上所述,重新啓動Eclipse的工作對我來說定義的用戶環境變量。 重新啓動Eclipse IDE後,System.getenv()正在拾取我的環境變量。