Pull to refresh

Comments 21

Чтобы использовать данный апдейтер нужно для каждой java в системе запустить
java -jar tzupdater.jar -u
Ага, и то же самое на Windows — помогает:
C:\jdk1.7.0_60\bin>.\java.exe -cp . -jar tzupdater.jar -u


Ещё у них есть rss www.oracle.com/ocom/groups/public/@otn/documents/webcontent/163246.xml, где сообщается о всех изменениях в tzupdater'е.

Чтобы не париться с переключением, проще всего указывать абсолютный путь к бинарнику java. Кроме того, java -jar tzupdater.jar -V расскажет какая версия tzdata зашита в текущем tzupdater, и какая установлена в той яве, через которую он запущен.
странно что в tzdata-java лежит 2014i, а на сайте оракла — только 2014h.

но не об этом хотел сказать. хочу напомнить, если кто-то имеет дело с joda-time — то там никакого автоматического апдейта зон не будет, потому что они «сами с усами». поэтому лучше библиотечку-то обновить в проектах, если этого ещё не произошло.
если используете spring webmvc, то считайте, что joda тоже используется.
Если вдруг нет возможности обновить joda-time, то можно в classpath подкинуть jar-ку с руками собранной tzdata
see github.com/JodaOrg/joda-time/blob/master/src/main/java/org/joda/time/tz/ZoneInfoCompiler.java и кастомным ZoneInfoProvider
и подсунуть руками через system property -Dorg.joda.time.DateTimeZone.Provider=my.foo.CustomZoneInfoProvider
Как подсказывают коллеги, которые прямо сейчас это правят, версия joda-time 2.5 уже содержит нужные фиксы.
Если вдруг нет возможности обновить joda-time
Да, извиняюсь, не туда reply пристроил. А нет ли у вас рецепта для joda-time без замены jar-ников? Это было бы веселее. А то jar-ники это такое дело, приезжают часто с пакетами — зависимостями и авто-обновляться любят.
Всё как написано выше.
Руками собрать свою jar-ку в которой будет свой кастомный ZoneInfoProvider и скомпилированная tzdata в ресурсах, положить куда-нибудь рядом с приложением, добавить её в classpath и добавить ключик JVM -Dorg.joda.time.DateTimeZone.Provider
Никто за вас вашу jarку автоматически не обновит.
Есть предположение что указанный метод не работает с openjdk, т.к. на сайте oracle tzdata собрана для обычного jdk. Для openjdk надо собирать вручную из исходников.
Как пишут в соседнем посте: habrahabr.ru/post/240915/, для Debian борьба с OpenJDK — это установка свежего пакета tzdata-java.
Проверил на своей Ubuntu — поставил OpenJDK7, всё работает (tzdata-java уже обновлён по рецепту статьи):

user@host:~$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
OpenJDK Server VM (build 24.65-b04, mixed mode)

user@host:/home/user$ javac -version
javac 1.7.0_65

user@host:/home/user$ javac -cp . TestMSK.java
user@host:/home/user$

user@host:/home/user$ java -cp . TestMSK
OK
Под IBM есть такая штука как JTZU, делает в принципе тоже самое. Но сама сканирует весь диск и патчит
tzupdater под 7 и 8ую версии. Что делать с 1.5 и 1.6?
На 6ой прекрасно работает. Про 1.5 не скажу не проверял, кмк тоже должно.
А для JRE тоже нужно выполнять описанную магию?
Она, собственно, для jre и выполняется.
нужно еще помнить про tzmappings — файл соответствия часовых зон винды и явы. В частности — в 6й версии там нет описания зоны asia\magadan. У меня от этого много проблем было.
Sign up to leave a comment.

Articles