OpenJDK时区问题:sun.util.calendar.ZoneInfoFile.getZoneIDs


3

我正在使用Ubuntu 12.04 LTS,最近使用apt-get安装了openjdk-7-jdk。 有一段时间似乎都很好,但我意识到我的一个项目开始打破以下堆栈:

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)

Googli'n周围我找到了其他有类似问题的人,指出了Oracle的tzupdater.jar工具中的一个错误。应该是我的情况,但我尝试了修复建议,检查并搞乱“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代码问题的任何提示?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.