Системные свойства Java и переменные среды - PullRequest
234 голосов
/ 14 августа 2011

В чем разница между системными свойствами System.getProperties () и переменными среды System.getenv () в JVM?

Ответы [ 2 ]

318 голосов
/ 14 августа 2011
  • Системные свойства задаются в командной строке Java с использованием синтаксиса -Dpropertyname=value. Они также могут быть добавлены во время выполнения используя 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).

137 голосов
/ 14 августа 2011

Я думаю, что разница между двумя сводится к доступу.Системные переменные среды доступны любому процессу, а системные свойства Java доступны только процессу, к которому они добавляются.

Также, как сказал Богемский, переменные env устанавливаются в ОС (однако их «можно» устанавливать с помощьюJava) и системные свойства передаются в качестве параметров командной строки или задаются с помощью setProperty().

...