如何更新OpenJDK的时区信息?

14

我如何更新OpenJDK的时区信息?Oracle发布了tzupdater,但受其许可限制,因此我不想使用它。我正在寻找一种开源替代方案,可以允许我仅更新时区信息而不是整个JRE。


使用tzupdater是唯一的方法,您能否澄清您的许可证问题? - Meno Hochschild
Oracle JRE的许可证不是开源的。tzupdater的许可证也不是常见/标准的开源许可证,因此我不敢在没有法律指导(昂贵)的情况下使用它。 - MonkBen
在Java-8中更新时区存储库实际上意味着将目录{JAVA_HOME}/jre/lib中的tzdb.dat文件更换为较新的版本。 - Meno Hochschild
@MonkBen 请分享一下如果你找到了在OpenJDK中更新时区的方法。我也在尝试同样的事情。谢谢。 - Anjana
不,从来没有想通。如果你能解决,请评论说明。我想我们只是使用了更新的JRE版本。 - MonkBen
显示剩余3条评论
1个回答

15

Azul最近发布了一个开源工具,可用于更新TZ数据:https://www.azul.com/products/open-source-tools/ziupdater-time-zone-tool/

它类似于Oracle tzupdater,但采用开源(GPLv2许可证)许可证。

用法:使用Java将其应用于您想要更新的IANA数据包:

$JAVA_HOME/bin/java -jar ziupdater.jar -l file://[path]/tzdata.tar.gz

通过这个命令,您将对Java安装应用时区更改。


这意味着什么?

考虑以下情况:您一年前安装了Java,后来某个国家的政府更改了他们的法律,例如取消了夏令时。 您的Java安装程序还不知道这一点,可能会在该特定地区处理时间时出现错误。 更新时区数据可以解决此问题。


3
很棒的信息。但我建议替换“locale”这个词。我知道你的意思,但它可能会与Locale混淆,后者与时区完全无关,完全正交,但由于本地化日期时间值的文本String表示而涉及到日期时间工作。将时区和语言环境混淆是程序员在学习日期时间工作时常见的困惑来源。我建议用“特定地区”之类的东西来替换“该特定国家的语言环境”。 - Basil Bourque
1
太好了。正是我正在寻找的。 - MonkBen
@muyinliu 请发送请求至 azul_openjdk@azul.com - Sergey Grinev
https://github.com/akashche/tzdbgen 是 OpenJDK 的一部分的分支 https://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/make/src/classes/build/tools/tzdb/。 - muyinliu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接