Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java System.getenv()未列出所有环境变量_Java_Variables_System_Environment - Fatal编程技术网

Java System.getenv()未列出所有环境变量

Java System.getenv()未列出所有环境变量,java,variables,system,environment,Java,Variables,System,Environment,我注意到JVM没有接收到我的一些环境变量 在我的.bash\u配置文件中,我定义了以下内容: IO_HOME='some_value' export IO_HOME 通过在shell中执行以下操作: echo $IO_HOME 我得到了正确的结果 但是无论是System.getProperties()还是System.getenv()都没有显示正在设置此变量。我尝试了Java6和Java7 我缺少什么吗?将环境导出到派生的进程相当稳定;如果System.getenv()未包含变量,则是因为该

我注意到JVM没有接收到我的一些环境变量

在我的
.bash\u配置文件中,我定义了以下内容:

IO_HOME='some_value'
export IO_HOME
通过在shell中执行以下操作:

echo $IO_HOME
我得到了正确的结果

但是无论是
System.getProperties()
还是
System.getenv()
都没有显示正在设置此变量。我尝试了Java6和Java7


我缺少什么吗?

将环境导出到派生的进程相当稳定;如果
System.getenv()
未包含变量,则是因为该变量不在环境中。需要检查的两件事都与流程的启动方式有关:

  • 您是否从导出变量的环境启动java进程?例如,如果它在您的.bash_配置文件中,并且您正在从菜单或桌面执行java程序,那么您必须在将其添加到桌面的.bash_配置文件后注销并登录才能查看变量

  • 该变量是否已从进程的环境中显式删除?允许这样做,就像大多数生成进程的API一样


要尝试的一件事是,在确保变量在命令行shell中导出后,从命令行shell启动流程

在Windows中,我最近看到了一些疯狂的行为,IntelliJ在设置用户或系统环境变量后拒绝显示
System.getenv()
中的所有环境变量。诀窍是从DOS盒中启动IntelliJ。对于Windows用户:重新启动(或注销/登录)可能会解决此问题。

可能重复的@MaLLinok是否从bash shell启动java应用程序?要测试这是bash问题还是java问题,可以先运行
env | grep^IO_HOME=
查看
env
是否看到此变量(如果它看到了,那么这是一个Java问题,而不是Bash问题),然后运行
env IO_HOME='some_value'Java您的Java_程序
,查看您的Java程序是否看到了这个变量(如果看到了,那么这是一个Bash问题,而不是Java问题)。如果这些结果相互矛盾,那么问题可能就在两者之间:这可能是Java程序的运行方式。自从我第一次设置这个env变量(一年半前)以来,我从未注销过。我假设关闭和打开Mac会自动完成这一操作。似乎不是这样!