如何获取存在的系统变量值
System.getenv()
在Java?
编辑
我用过的null
方法.
如果我给,它是印刷价值
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
System.getenv()
如果我对我创建的系统变量尝试相同的话,它就会显示出来
System.out.println(System.getenv("JAVA_HOME"));
Rob.. 171
使用该System.getenv(String)
方法,传递要读取的变量的名称.
使用该System.getenv(String)
方法,传递要读取的变量的名称.
为了澄清,系统变量与环境变量相同.用户环境变量是按用户设置的,并且每当有不同的用户登录时都是不同的.无论用户登录什么,系统范围的环境变量都是相同的.
要访问系统范围变量的当前值或Java中的用户变量,请参阅以下内容:
String javaHome = System.getenv("JAVA_HOME");
有关环境变量的更多信息,请参阅此维基百科页面.
通过执行以下操作,还要确保在调用Java之前正确设置了您尝试读取的环境变量:
echo %MYENVVAR%
您应该看到环境变量的值.如果没有,您可能需要重新打开shell(DOS)或注销并重新登录.
获取系统/环境属性时,有一些感兴趣的细节.
首先,System.getenv(String)
介绍了回溯时间,然后弃用.弃用(愚蠢地,IHMO)一直持续到JSE 1.4.
它在JSE 5中重新引入.
这些是使用Windows中的"环境变量"面板设置的.在当前VM关闭之前,可能无法获取对变量的更改,并且退出CMD.exe实例.
与环境属性相比,Java还具有可通过的Java系统属性System.getProperties()
.使用一系列命令行参数启动VM时,可以初始化这些变量.例如,对于属性的值和在下面的命令设置的:-Dname=value
maxInMemory
pagingDirectory
C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar
除非安全策略限制,否则可以在运行时修改这些属性.
实际上变量可以设置或不设置,因此,在Java 8或更高版本中,它的可空值应该被包装到一个Optional
对象中,这允许非常好的特性.在下面的示例中,我们将尝试获取变量ENV_VAR1
,如果它不存在,我们可能会抛出一些自定义异常来提醒它:
String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow( () -> new CustomException("ENV_VAR1 is not set in the environment"));
Google表示要查看getenv():
返回当前系统环境的不可修改的字符串映射视图.
但是,我不确定系统变量与环境变量的区别,所以如果你能澄清我可以提供更多帮助.