Проблемы с часовым поясом OpenJDK: sun.util.calendar.ZoneInfoFile.getZoneIDs

1531
gabriel_agm

Я использую Ubuntu 12.04 LTS и недавно установил openjdk-7-jdk с помощью apt-get. Некоторое время все было хорошо, но я понял, что один из моих проектов начал ломаться со следующим стеком:

java.lang.NullPointerException sun.util.calendar.ZoneInfoFile.getZoneIDs(ZoneInfoFile.java:790) sun.util.calendar.ZoneInfo.getAvailableIDs(ZoneInfo.java:601) java.util.TimeZone.getAvailableIDs(TimeZone.java:580) mpeg.psi.TOT.parseMJD(TOT.java:136) 

Похоже, я нашел других людей с похожими проблемами, указав на ошибку в инструменте tzupdater.jar из Oracle. Должно быть не в моем случае, но я попробовал предложенное исправление, проверив и покинув разрешения «lrwxrwxrwx 1 root root 27 Set 20 08:59 / usr / lib / jvm / java-7-openjdk-amd64 / jre / lib / zi -> ../../../../../share/javazi "и запуск tzupdater. Каким-то образом я это исправил, но какое-то более позднее обновление сломало это снова.

Я решил пойти радикальным тогда:

$> sudo apt-get purge openjdk-6-jre openjdk-6-jre-lib openjdk-7-jre-headless openjdk-7-jre-lib openjdk-7-jre openjdk-6-jre-headless java-common $> sudo apt-get install openjdk-6-jdk ant jdownloader java-common $> sudo apt-get install tzdata-java tzdata-java is already the newest version. 

Все еще глючит :(

Теперь у меня нет идей. Код, который нарушает это: TimeZone.getAvailableIDs (-3 * 60 * 60 * 1000); То есть я хочу получить GMT-3, чтобы преобразовать набор чисел (hous, minute, day ...) в Date:

 gc.set(GregorianCalendar.YEAR, year); gc.set(GregorianCalendar.MONTH, month - 1); 

Любой совет о том, как исправить Java TZ или как обойти проблему с кодом Java?

3

0 ответов на вопрос