Подтвердить что ты не робот

В Windows 7 как Java JVM устанавливает свойство "user.home" System?

Я использую JRE 1.7, и я обнаружил, что свойство user.home System очень необычно. Как JVM устанавливает это значение?

4b9b3361

Ответ 1

Эта ошибка Java объясняет, как: http://bugs.sun.com/view_bug.do?bug_id=4787931

Системное свойство user.home устанавливается следующим образом:

  • Прочитайте значение реестра для ключа: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop
  • Возьмите родительский путь этого значения, но не разрешайте переменные среды.

Пример: %userprofile%\Desktop = > %userprofile% (нерешенная переменная среды)

Эта проблема должна быть исправлена ​​в Java 8.

Связанная ссылка: Java user.home устанавливается на% userprofile% и не разрешается

Ответ 2

В окнах он получает значение, как указано в принятом ответе, и зависит от местоположения папки "Рабочий стол".

Существует обходное решение, если вы хотите изменить местоположение папки "Рабочий стол по умолчанию" и по-прежнему хотите иметь user.home в той же папке:

добавить это в переменные окружения:
_JAVA_OPTIONS: -Duser.home =% HOMEDRIVE %% HOMEPATH%

или в командной строке: набор _JAVA_OPTIONS = -Duser.home =% HOMEDRIVE %% HOMEPATH%

Я видел решение в комментариях к этой странице: http://www.timehat.com/javas-user-home-is-wrong-on-windows/