簡體   English   中英

System.getenv()未列出所有環境變量

[英]System.getenv() does not list all the environment variables

我注意到我的一些環境變量沒有被JVM接收。

在我的.bash_profile我定義了以下內容:

IO_HOME='some_value'
export IO_HOME

並通過在shell中做:

echo $IO_HOME

我得到了正確的結果。

但是System.getProperties()System.getenv()都沒有顯示正在設置的變量。 我嘗試了Java 6和Java 7。

有什么我想念的嗎?

將環境導出到生成的進程非常穩定; 如果System.getenv()不包含變量,那么它是因為它不在環境中。 要檢查的幾件事情,都與流程的啟動方式有關:

  • 您是從導出變量的環境啟動Java進程嗎? 例如,如果它位於.bash_profile中,並且您正在從菜單或桌面執行java程序,那么在將其添加到.bash_profile中后,您必須注銷並登錄,以便桌面查看變量。

  • 變量是否明確地從過程的環境中刪除了? ProcessBuilder允許這樣做,大多數產生進程的API也是如此。

在確保在該shell中導出變量之后,要嘗試的一件事是從命令行shell啟動該過程。

在Windows中,我最近看到一些瘋狂的行為,其中IntelliJ在設置用戶或系統環境變量后拒絕顯示來自System.getenv()所有env變量。 訣竅是從DOS框啟動IntelliJ。 對於Windows用戶:可能重啟(或注銷/登錄)將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM