Отладка программы Java для изменения конфигурационного файла часового пояса на Ubuntu

Зависеть, какая Настольная среда Вы используете Вас, могло интегрировать Firefox с механизмом хранения пароля по умолчанию для этой среды:

  • KDE - KWallet
  • GNOME - GNOMEKeyring

Если Вы хотите, интегрируют Firefox с KWallet, Вы могли бы использовать расширение интеграции пароля Кошелька KDE для Firefox. Если Вы - пользователь GNOME существует расширение интеграции пароля брелока для ключей Gnome (необходимо изменить его для установки с новейшей версией Firefox - инструкции находятся в комментариях на дополнительном сайте).

1
28.11.2011, 03:12
1 ответ

Это - проблема в том, как Java определяет часовой пояс под системами Unix.

Спецификация POSIX не указывает, как определить часовой пояс когда TZ переменная среды не установлена. Я ничего не могу найти в Основе Стандарта Linux об этом. Основная системная библиотека (GNU libc) использование /etc/localtime определить часовой пояс. Таким образом на невстроенном Linux, /etc/localtime то, где информация часового пояса хранится, и идеально история закончилась бы здесь.

(Оглядывание: FreeBSD, NetBSD и использование OpenBSD /etc/localtime. Солярис и немногие другие используют /etc/TIMEZONE. Розеттский камень для Unix показывает то, что используют другие нельды. Dietlibc (используемый в некоторых встроил системы Linux), использование /etc/localtime, в то время как uClibc использует /etc/TZ (если не исправлено).)

К сожалению, Java делает вещи по-другому. Debian и Ubuntu назвали файл /etc/timezone который содержит название часового пояса. Этот дополнительный файл предназначается для упаковочной системы, так, чтобы это помнило географическое имя как Europe/Amsterdam вместо просто описания часового пояса (смещает со временем, и отображаемые имена CET, CEST и CEDT). Это является и более дружественным по отношению к людям и устойчивым в случае, если географическая локаль обновляет свои правила часового пояса. Sun (теперь Oracle) Java предпочитает /etc/timezone (или /etc/sysconfig/clock на основанных на Red Hat дистрибутивах), посмотрите ошибку № 6456628 к /etc/localtime, и OpenJDK и gcj следуют примеру.

См. также: Как я нахожу часовой пояс существующей системы?; Часовой пояс Java испорчен.

Решение просто: всегда обновление /etc/timezone и /etc/localtime вместе. На Debian или Ubuntu, официальный метод для изменения часового пояса dpkg-reconfigure tzdata. Для изменения часового пояса только для одного приложения установите TZ переменная среды (это портативно через все системы Unix).

6
27.01.2020, 23:15
  • 1
    Это работает. Все, что я должен был сделать, работало sudo dpkg-reconfigure tzdata. После перезапуска сервера Java это взяло корректный часовой пояс. Согласно этому руководству, необходимо также работать sudo apt-get install ntp включить синхронизацию NTP. –  Håvard Geithus 11.07.2015, 13:13

Теги

Похожие вопросы