繁体   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