2014-08-27 70 views
0

關於Groovy/Java的獲取用戶變量,我們必須:Windows機器

System.getenv() 

用於獲取系統變量(紅色箭頭),但我想不出如何讓用戶變量(藍色箭頭)?

enter image description here

+1

他們不是兩套環境變量嗎? – 2014-08-27 12:49:53

回答

6

從JVM的角度來看,你是否在系統或用戶級別設置環境變量也沒關係。 它們被Windows合併(顯然,特定用戶會話的特定用戶變量)。

獲取此類變量值的代碼是System.getenv("variablename"),並且在Groovy或Java中看起來完全相同。

什麼可能導致您的變量爲空?設置這樣的變量後,您需要重新啓動應用程序。它可能是IDE,萬維網服務器或其他。 JVM需要有機會在初始化時選擇新變量(或舊變量的新值)。

簡單測試來檢查您的變量是否設置爲肯定是運行Windows控制檯(cmd)並鍵入set。這將打印所有可用的環境變量,其中也包括用戶變量。

還有一點值得一提的是您在示例中指出的變量PATH。 Windows對待這個不同於任何其他。通常,只要您將用戶變量設置爲與已有系統變量相同的名稱,就意味着該用戶會話的系統值將被用戶值覆蓋。 但是,對於PATH變量,Windows將系統值附加到用戶值。

無論如何,如果在用戶級別設置具有相同名稱但不同值的變量,則無法訪問給定變量名的系統變量值。它已被覆蓋或附加。

+0

是的,你是正確的,在查詢'System.getenv(「Path」)時檢索用戶特定的和系統範圍的Path值;' – 2014-08-28 07:40:51

+1

SoapUI GUI應該從我的經驗中重新啓動,如果你在這個工具中編寫腳本並在啓動後創建System/User變量。 – Picrochole 2016-11-04 12:29:19