Java系统属性和环境变量

问题

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


#1 热门回答(273 赞)

  • 使用-Dpropertyname = value语法在Java命令行上设置系统属性。它们也可以在运行时使用System.setProperty(String key,String value)或通过各种System.getProperties()。load()方法添加。要获取特定的系统属性,可以使用System.getProperty(String key)或System.getProperty(String key,String def)。
  • 在OS中设置环境变量,例如在Linux导出HOME = / Users / myusername或Windows SET WINDIR = C:\ Windows等,并且,与属性不同,可能不会在运行时设置。要获取特定的环境变量,可以使用System.getenv(String name)。

#2 热门回答(114 赞)

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

同样波希米亚人所说,env变量在OS中设置(但它们可以通过Java设置),系统属性作为命令行选项传递或通过setProperty()设置。