JVM中系统属性System.getProperties()和环境变量System.getenv()之间有什么区别?
答案 0 :(得分:311)
使用-Dpropertyname=value
语法在Java命令行上设置系统属性 。它们也可以在运行时添加
使用System.setProperty(String key, String value)
或通过各种方式
System.getProperties().load()
方法。
要获取特定的系统属性,您可以使用System.getProperty(String key)
或System.getProperty(String key, String def)
。
环境变量 在操作系统中设置,例如在Linux export HOME=/Users/myusername
或Windows SET WINDIR=C:\Windows
等中,
并且,与属性不同,可能不在运行时设置
要获取特定的环境变量,您可以使用System.getenv(String name)
。
答案 1 :(得分:135)
我认为两者之间的区别归结为访问权限。系统环境变量可由任何进程访问,Java系统属性只能由添加它们的进程访问。
同样波希米亚人所述,env变量在OS中设置(但它们可以通过Java设置),系统属性作为命令行选项传递或通过setProperty()
设置。