[英]How can I get System variable value in Java?
如何获取系统变量值存在于
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
在 Java 中?
编辑
我使用了System.getenv()
方法。
如果我给,它是印刷价值
System.out.println(System.getenv("JAVA_HOME"));
如果我对我创建的系统变量尝试相同的值,它会显示null
值
System.out.println(System.getenv("DBE"));
使用System.getenv(String)
方法,传递要读取的变量名称。
为了明确起见,系统变量与环境变量相同。 用户环境变量是为每个用户设置的,每当一个不同的用户登录时,该用户环境变量就会不同。无论用户登录什么,系统范围的环境变量都是相同的。
要访问Java中系统范围变量或用户变量的当前值,请参见以下内容:
String javaHome = System.getenv("JAVA_HOME");
有关环境变量的更多信息,请参见此Wikipedia页面 。
通过执行以下操作,还要确保在调用Java之前正确设置了要尝试读取的环境变量:
echo %MYENVVAR%
您应该看到环境变量的值。 如果不是,则可能需要重新打开外壳(DOS)或注销并重新登录。
获取系统/环境属性时,有一些有趣的细节。
首先,将System.getenv(String)
反向引入,然后弃用。 弃用(愚蠢的是IHMO)一直持续到JSE 1.4 。
它在JSE 5中重新引入 。
这些是使用Windows中的“环境变量”面板设置的。 在关闭当前VM并退出CMD.exe实例之前,可能不会获取对变量的更改。
与环境属性相反,Java还具有Java系统属性,可通过System.getProperties()
访问。 = command line arguments. 在启动VM时,可以使用-D =
命令行参数系列来初始化这些变量。 例如,在以下命令中设置属性maxInMemory
和pagingDirectory
的值:
C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar
可以在运行时修改这些属性,除非存在安全策略限制。
实际上,该变量可以设置或不设置,因此,在Java 8或更高版本中,应将其可为空的值包装到Optional
对象中,该对象具有非常好的功能。 在下面的示例中,我们将尝试获取变量ENV_VAR1
,如果它不存在,我们可能会抛出一些自定义Exception来警告它:
String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
() -> new CustomException("ENV_VAR1 is not set in the environment"));
如上面的sombody所述,对于用户定义的环境变量,重新启动eclipse对我有用。 重新启动eclipse IDE之后, System.getenv()
正在获取我的环境变量。
自设置环境变量以来,您是否尝试过重启?
Windows似乎将其环境变量保留在某种缓存中,重新启动是刷新它的一种方法。 我不确定,但是可能有不同的方法,但是如果您不想太频繁地更改变量值,这可能就足够了。
您在Linux系统上吗? 如果是这样,请确保您正在导出变量。
myVar=testvalue; export myVar
除非使用export全局定义值,否则我将为null。
此代码为您提供环境变量名称和相应值的 map。
public static void main(String[] args) {
Map<String, String> map = System.getenv();
System.out.println(map);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.