Java系统属性和环境variables

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

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

同样如Bohemian所言,envvariables是在OS中设置的(但是可以通过Java设置),系统属性作为命令行选项传递,或者通过setProperty()设置。

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

  • 环境variables是在操作系统中设置的,例如,在Linux export HOME=/Users/myusername或Windows SET WINDIR=C:\Windows环境variables中设置,而不像属性,在运行时不能设置。
    要获取特定的环境variables ,可以使用System.getenv(String name)