为什么Java使用System.getenv()获取刚刚设置的环境变量时为空
Posted Jim
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Java使用System.getenv()获取刚刚设置的环境变量时为空相关的知识,希望对你有一定的参考价值。
场景:
在Ubuntu下已经启动了Eclipse,然后通过终端设置了环境变量(export $ENV=123),然后通过System.getenv()获取时显示为空。
解释:
环境变量仅在进程树下方,并且只有在进程启动时。Eclipse是您的Shell的子进程 - 因此,当您启动Eclipse时,它继承了您的Shell上定义的所有环境变量。
您可能在启动Eclipse之后在Shell上定义了环境变量,因此,Eclipse及其创建的Java子进程不了解您的新环境变量。
由于这个行为,实际上这里的解决方案是退出Eclipse并从Shell重新启动它,而环境变量之前定义。另一个选择是转到项目的运行配置并在其中定义环境变量。
参考:
以上是关于为什么Java使用System.getenv()获取刚刚设置的环境变量时为空的主要内容,如果未能解决你的问题,请参考以下文章
系统变量之System.getenv()和System.getProperty()
系统变量之System.getenv()和System.getProperty()
System.getProperty System.getenv 区别 log4j取法
Java读取自定义环境变量的方法System.getProperty和System.getenv