Я использую 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?