為什么Java使用System.getenv()獲取剛剛設置的環境變量時為空


場景:

在Ubuntu下已經啟動了Eclipse,然后通過終端設置了環境變量(export $ENV=123),然后通過System.getenv()獲取時顯示為空。

解釋:

環境變量僅在進程樹下方,並且只有在進程啟動時。Eclipse是您的Shell的子進程 - 因此,當您啟動Eclipse時,它繼承了您的Shell上定義的所有環境變量。

您可能在啟動Eclipse之后在Shell上定義了環境變量,因此,Eclipse及其創建的Java子進程不了解您的新環境變量。

由於這個行為,實際上這里的解決方案是退出Eclipse並從Shell重新啟動它,而環境變量之前定義。另一個選擇是轉到項目的運行配置並在其中定義環境變量。

 

參考:

https://stackoverflow.com/questions/29782467/system-getenv-returns-null-when-the-environment-variable-exists


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM