【问题标题】:Update to tzdata2019b is failing - tzupdater version 2.2.0-b01更新到 tzdata2019b 失败 - tzupdater 版本 2.2.0-b01
【发布时间】:2019-07-05 19:46:41
【问题描述】:

我正在尝试使用 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

这个问题真的解决了吗?还是有其他解决方法?谢谢。

【问题讨论】:

标签: java timezone


【解决方案1】:

目前,TZUpdater 工具仅与“后卫”数据格式兼容,该格式不再具有预构建的二进制文件。 IANA 从未发布过它们,但 Paul Eggert(TZ 维护者)之前曾在他自己的个人网站上发布过它们。他已经决定不再这样做了。 (关于这个有a long thread in the TZDB mailing list。)

幸运的是,您可以通过以下过程自己构建它们:

  • 下载完整的分发文件tzdb-2019b.tar.lzfrom 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 得到解决,该版本可以理解发布格式而不需要后卫数据。

【讨论】:

    【解决方案2】:

    我想评论一下,Matt 的解决方案也可以在 Windows 上使用 Cygwin,只要确保安装包 lzipmake,因为它们默认没有被选中。

    只有我没有在 Windows 上工作的这个是使用本地文件。 java -jar tzupdater.jar -v -l tzdata2019b-rearguard.tar.gzjava -jar tzupdater.jar -v -l file://tzdata2019b-rearguard.tar.gz 不适合我,所以我复制到内部服务器,然后能够使用更新 java -jar tzupdater.jar -v -l http://some-iis-server/tzdata2019b-rearguard.tar.gz

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2019-03-26
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多