一尘不染

Java系统属性和环境变量

java

JVM中的系统属性System.getProperties()和环境变量System.getenv()有什么区别?


阅读 577

收藏
2020-03-07

共2个答案

一尘不染

我认为两者之间的区别归结为访问。系统环境变量可以由任何进程访问,而Java系统属性只能由添加到它们的进程访问。

另外,正如Bohemian所说,env变量是在OS中设置的(但是可以通过Java设置),而系统属性则作为命令行选项传递或通过设置setProperty()。

2020-03-07
一尘不染

使用-Dpropertyname=value语法在Java命令行上设置系统属性。也可以使用System.setProperty(String key, String value)或通过各种 System.getProperties().load()方法在运行时添加它们。
要获取特定的系统属性,可以使用System.getProperty(String key)System.getProperty(String key, String def)

环境变量是在OS(例如Linuxexport HOME=/Users/myusernameWindowsSET WINDIR=C:\Windows等)中设置的,与属性不同,环境变量可能无法在运行时设置。
要获取特定的环境变量,可以使用System.getenv(String name)

2020-03-07