我如何才能得到系统变量的值,这是目前在

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

在Java中?

Edit

我已经使用了System.getenv()方法。

如果我给,它就是印刷价值

System.out.println(System.getenv("JAVA_HOME"));

如果我尝试对我创建的系统变量执行相同的操作,它会显示空值

System.out.println(System.getenv("DBE"));

当前回答

使用System.getenv(String)方法,传递要读取的变量名。

其他回答

使用System.getenv(String)方法,传递要读取的变量名。

你使用的是linux系统吗?如果是这样,请确保导出了变量。

myVar=testvalue; export myVar

我得到null,除非我使用export全局定义值。

在获取系统/环境属性时,有一些值得关注的细节。

首先,System.getenv(String)是在很久以前引入的,然后被弃用了。弃用(愚蠢的IHMO)一直延续到JSE 1.4。

它在JSE 5中被重新引入。

这些是使用Windows中的环境变量面板设置的。在当前虚拟机关闭并退出CMD.exe实例之前,对变量的更改可能不会被拾取。

与环境属性相反,Java也有Java系统属性,可以通过system . getproperties()访问。这些变量可以在虚拟机启动时使用一系列-Dname=value命令行参数初始化。例如,属性maxInMemory和pagingDirectory的值在下面的命令中设置:

C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar

这些属性可以在运行时修改,不受安全策略限制。

谷歌表示检出getenv():

返回当前系统环境的不可修改的字符串映射视图。

然而,我不确定系统变量与环境变量有何不同,所以如果你能解释清楚,我可以提供更多帮助。

实际上变量可以设置也可以不设置,所以,在Java 8或更高版本中,它的可空值应该被包装成一个可选对象,这允许真正好的功能。在下面的例子中,我们将尝试获取变量ENV_VAR1,如果它不存在,我们可以抛出一些自定义异常来警告它:

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomException("ENV_VAR1 is not set in the environment"));