Властивості системи Java та змінні середовища


Відповіді:


148

Я думаю, що різниця між двома зводиться до доступу. Змінні системного середовища доступні будь-яким процесом, а властивості системи Java доступні лише тому процесу, до якого вони додані.

Крім того, як заявив Bohemian, змінні env встановлюються в ОС (однак вони можуть бути встановлені через Java), а властивості системи передаються як параметри командного рядка або встановлюються через setProperty().


5
Нарешті, це те, як додаються змінні та обсяг змінних.
Praveen Sripati

Майте на увазі, що інші процеси можуть знайти cmd, який використовується для запуску процесу, отже, і властивості системи java.
Крістіан

359
  • Властивості системи встановлюються в командному рядку Java за допомогою-Dpropertyname=valueсинтаксису. Вони також можуть бути додані під час виконання, використовуючиSystem.setProperty(String key, String value)або за допомогою різних System.getProperties().load()методів.
    Для отримання конкретного системного властивості ви можете використовуватиSystem.getProperty(String key)абоSystem.getProperty(String key, String def).

  • Змінні середовища встановлюються в ОС, наприклад, в Linuxexport HOME=/Users/myusernameабо в WindowsSET WINDIR=C:\Windowsтощо, і, на відміну від властивостей, можуть не встановлюватися під час виконання.
    Щоб отримати конкретну змінну середовища, ви можете використовуватиSystem.getenv(String name).


42
Абсолютно правильно, богем. Змінні середовища - це "річ ОС", а властивості - "річ Java". Як це відбувається, Java вирішила виставити змінні ОС як властивості (подібно до того, як Java виставляє поточний каталог та "інші речі" як властивості), але насправді це різні речі.
paulsm4

@MarekSebera, що так ти маєш на увазі?
богем

8
System.grtProperties()перераховує всі властивості, і ті, які встановлені з командного рядка, будуть там, але немає способу відрізнити ці властивості від інших властивостей, доданих системою, якщо ви про це запитуєте.
богем

11
Зауважте, що ви також можете встановити властивості системи за допомогою змінної середовища JAVA_TOOL_OPTIONS.
flacs

6
@KanagaveluSugumar Так, вам потрібно перезапустити: параметри змінної середовища читаються з навколишнього середовища при запуску. тобто System.getenv(String name)не динамічно зчитує значення з системи під час виклику.
богем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.