我正在尝试使用Oracle的tzupdater工具更新时区数据。我看到一个堆栈溢出答案(Error updating tzdata 2018f (Released 2018-10-18) with tzupdater-2.2.0)说该问题已在2018版的时区数据中解决,但它现在正在尝试安装2019版,但仍然失败。
# java -jar tzupdater.jar -v -l
Using https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz as source for tzdata bundle.
java.home: /usr/java/jre1.8.0_102
java.vendor: Oracle Corporation
java.version: 1.8.0_102
tzupdater version 2.2.0-b01
JRE tzdata version: tzdata2016d
Downloaded file to /tmp/tz.tmp_3/tzdata.tar.gz
tzupdater tool would update with tzdata version: tzdata2019b
Compiling TZDB version 2019b
Parsing file: /tmp/tz.tmp_3/africa
Parsing file: /tmp/tz.tmp_3/antarctica
Parsing file: /tmp/tz.tmp_3/asia
Failed: java.lang.Exception: Failed while parsing file '/tmp/tz.tmp_3/asia' on line 1865 'Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S'
java.lang.Exception: Failed while parsing file '/tmp/tz.tmp_3/asia' on line 1865 'Rule Japan 1948 1951 - Sep Sat>=825:00 0 S'
at tools.tzdb.TzdbZoneRulesCompiler.parseFile(TzdbZoneRulesCompiler.java:377)
at tools.tzdb.TzdbZoneRulesCompiler.compile(TzdbZoneRulesCompiler.java:191)
at tools.tzdb.TzdbZoneRulesCompiler.<init>(TzdbZoneRulesCompiler.java:307)
at com.sun.tools.tzupdater.ExternalModule.compileToJSRBinary(ExternalModule.java:153)
at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:230)
at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:634)
Caused by: tools.tzdb.DateTimeException: Invalid value for SecondOfDay value: 90000
at tools.tzdb.ChronoField.checkValidValue(ChronoField.java:173)
at tools.tzdb.LocalTime.ofSecondOfDay(LocalTime.java:210)
at tools.tzdb.TzdbZoneRulesCompiler.parseMonthDayTime(TzdbZoneRulesCompiler.java:475)
at tools.tzdb.TzdbZoneRulesCompiler.parseRuleLine(TzdbZoneRulesCompiler.java:399)
at tools.tzdb.TzdbZoneRulesCompiler.parseFile(TzdbZoneRulesCompiler.java:354)
... 5 more
这个问题真的解决了吗?还是有其他解决方法?谢谢。
最佳答案
当前,TZUpdater工具仅与“ rearguard”数据格式兼容,后者不再具有预构建的二进制文件。 IANA从未发布过它们,但是Paul Eggert(TZ维护者)以前曾在自己的个人站点上发布过它们。他决定不再这样做。 (关于此的a long thread in the TZDB mailing list。)
幸运的是,您可以通过以下过程自行构建它们:
下载完整的分发文件tzdb-2019b.tar.lz
from IANA。
在POSIX系统上(此处假定为Ubuntu Linux):sudo apt install lzip
(如果您还没有的话)lzip -d tzdb-2019b.tar.lz
tar xvf tzdb-2019b.tar
cd tzdb-2019b
make rearguard_tarballs
生成的tzdata2019b-rearguard.tar.gz
文件与TZUpdater兼容:
java -jar tzupdater.jar -v -l tzdata2019b-rearguard.tar.gz
希望最终可以通过TZUpdater的更新版本解决该问题,该版本可以了解发布格式,而无需提供后卫数据。