Властивості системи 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.