提供 TZUpdater 工具是为了能够用较新的时区数据更新已安装的 Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 软件,以适应不同国家/地区夏令时 (DST) 变更的需要。Oracle 依赖于通过 IANA 的时区数据库公开发布的时区数据。
Oracle 建议您首选新的 Oracle Java SE 平台 JDK 或 JRE 更新版本来交付时区数据更新及安全修复等其他产品改进。要查看哪个 JDK 或 JRE 更新版本包含针对您的区域设置的更新时区数据,请参见 JRE 软件中的时区数据版本。但如果您无法使用 Oracle 新的 JDK 或 JRE 更新版本或者关于新版本的时区数据不是最新的可用数据,TZUpdater 工具让您可以在更新时区数据的同时保持其他系统配置和依赖关系不变。
TZUpdater 工具支持所有支持的平台上目前支持的所有 Oracle JDK 和 JRE 版本。java.vendor
属性值必须为 Sun Microsystems Inc.
、Oracle Corporation
或 BEA Systems,Inc.
如果您已在 JDK/JRE 软件上运行 TZUpdater 工具的早期版本,仅当系统需要 JRE 软件中的时区数据版本中所述的特定错误修复,您才需应用此版本的 TZUpdater 工具。
Oracle 技术网 — Java SE 下载页面中提供了用于更新 Oracle Java Runtime Enviroment 当前版本的 TZUpdater 工具版本。
支持客户可以通过 My Oracle Support 下载用于早期版本的 TZUpdater 工具。参见注释 1412103.2。
TZUpdater 工具修改了用于执行该工具的 JDK/JRE 软件实例。每次执行都会修改一个 JDK/JRE 软件映像。要针对多个 JDK/JRE 软件实例管理该工具,请参见系统级用法部分。
在已安装的 JDK/JRE 软件映像上运行 TZUpdater 工具之前,必须先停止基于该 JDK/JRE 软件运行的所有实例。
使用以下命令运行 TZUpdater 工具:
java -jar tzupdater.jar options
要成功更新时区数据,您应确保您有足够的权限来修改 JDK_HOME
/jre/lib
或 JRE_HOME
/lib
目录。如果您没有足够的权限来修改这些目录,请联系系统管理员。
如果不指定任何选项,将显示用法消息。要更新时区数据,请使用 -l
或 -f
选项。
选项 | 说明 |
---|---|
-h, --help | 将用法输出到 stdout 并退出。如果您指定此选项,则将忽略其他选项。 |
-V, --version | 输出工具版本、JRE 中的 tzdata 版本、该工具将更新到的 tzdata 版本,然后退出。 |
-l, --location url-link-to-archive-file | 编译、测试并更新所提供的 tzdata.tar.gz 包中的 JRE 时区数据,例如,-l http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz 。支持的 URL 协议:http://、https://、file://。如果不提供 URL 链接,该工具将使用 http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz 上最新的 IANA tzdata 包。 |
强制执行 tzdata 更新。如果要更新到早期版本的 tzdata,请使用此选项。 | |
-v, --verbose | 将详细消息显示到 stdout 。 |
遇到意外错误(如磁盘空间不足)时,该工具会尝试还原原始状态。
-u
选项 使用 -l
选项更新数据。要了解有关此选项及其他可用选项的信息,请将 -h
选项传递给该工具,如下例所示:
java -jar tzupdater.jar -h
tzupdater.jar
文件进行了数字签名。请使用以下命令验证签名: jarsigner -verify -verbose -certs tzupdater.jar
从 2.0 版开始,“-l
”选项允许用户指向 IANA 信息库并按需获取编译新 tzdata 源所需的工具。
如果 -l 选项中指定了 http 或 https 协议,该工具还会引用 https 资源网站以获取 SHA-512 散列值。
因此,任何使用代理访问的环境在运行此工具时均需设置 http 和 https 代理值。
HTTP: -Dhttp.proxyHost, -Dhttp.proxyPort HTTPS : -Dhttps.proxyHost, -Dhttps.proxyPort
如果该工具无法连接到指定资源,将引发套接字异常:
Network issue while connecting to http resource. Please reference tzupdater README.
将对下载的 tzdata 包执行自动 SHA-512 哈希检查以验证完整性。如果 SHA-512 散列值与预期不符,该工具将退出。
可能有些情况下有新的 tzdata 版本可用,但 Oracle 尚未用新的 SHA-512 散列值更新 https 资源网站。
在此类情况下,用户将看到以下异常消息:
No SHA-512 hash file found: https://javadl-esd-secure.oracle.com/update/tzupdater/tzdata2014a.tar.gz.sha512. If using http(s) resource location, the file may not yet be available. Please reference tzupdater README
用户在此情况下可以选择将新的 -l
选项与 file:// 协议结合使用,可在其中指定自己的本地 SHA-512 散列值:
tzdata.tar.gz
包副本下载到本地目录。例如,如果您将 tzdata2014a.tar.gz
下载到本地目录,则该目录中必须存在一个名为 tzdata2014a.tar.gz.sha512
的文件,且该文件必须包含与 tzdata2014a.tar.gz
文件对应的 SHA-512 散列值。
tzdata2014a.tar.gz
下载到 /tmp
目录并创建了必需的 /tmp/tzdata2014a.tar.gz.sha512
文件,其中包含一行 sha512 散列值,则可使用以下命令运行 tzdata 更新:java -jar tzupdater.jar -l file:///tmp/tzdata2014a.tar.gz
-v
选项可获取详细输出)由于 TimeZone API 和实现约束,该工具有一些限制。
/usr/bin/find |
DIRPATH
是要搜索已安装的 Java SE 平台实例的目录路径,例如 /usr
。 /usr/bin/find |
DIRPATH
是要搜索已安装的 Java SE 平台实例的目录路径,例如 /usr
。ABSOLUTEPATH
应替换为 tzupdater.jar
的解压目录的完整路径名称。 umask
设置umask
。运行 TZudpater 工具时应使用默认的 umask
值 022。限制性更强的 umask
(如 umask 077
)将意味着其他用户不能读取该工具创建的文件。TZUpdater 是一个纯 Java 工具,它不能解决平台特定的软件管理问题。例如,在 Windows 系统上,这意味着无法在卸载时删除该工具创建的其他文件和备份文件。要卸载经过更新的 JRE 软件,请在卸载程序完成之后立即检查 JRE 软件的安装目录并手动删除。
对于 Solaris 系统,其更新的 JRE 软件是以 Solaris 软件包的形式存在的(如在 /usr/j2se
或 /usr/jdk/
实例中),这已经意味着 pkgchk
命令将更改作为错误或不一致突出显示。从 TZUpdater 1.1.0 版开始,该工具将运行一系列附加的软件包管理命令,以根据需要更新软件包数据库。
在 Solaris 10 系统上,TZUpdater 的初始版本已经更新了现有的基于软件包的 JRE 软件,并且已经创了建区域,区域将包含与全局区域相同的 pkgchk
错误。在区域创建过程中,将在区域安装命令结束时突出显示这些 pkgchk
错误。
为解决 Solaris 软件包数据库错误,请执行以下步骤。但如果您运行的不是 Solaris 10 系统或者系统上没有区域,则只需执行第 1 步。如果系统是 Solaris 10 系统并有其他区域,则仅在全局区域执行第 1 步并按照第 2 步和第 3 步操作。
请运行 TZUpdater 的当前版本,并使用 -f force
选项对先前更新过的 JRE 软件实例重新应用时区更新。将进行更新,并执行其他软件包解析命令。更新必须以 root 用户身份执行,且仅在 Solaris 10 系统中才针对全局区域。
tzupdater.jar
文件解压缩 pkg_resolve.sh
脚本 : /bin/jar xf tzupdater.jar pkg_resolve.sh |
/bin/ksh ./pkg_resolve.sh JAVA_PATH |
/bin/ksh ./pkg_resolve.sh /usr/jdk/instances/jdk1.8.0/bin/java |
注:对软件包系统的更新将从软件包数据库删除许多文件并重新插入,因此可能需要长达 15 分钟。
在已安装的 JDK/JRE 软件映像上运行 TZUpdater 工具之前,必须先停止基于该 JDK/JRE 软件运行的所有实例。
目前尚无用于删除 TZUpdater 修改的选项。您可以执行以下步骤手动删除当前 TZUpdater 工具所做修改。
对于 JDK 7 及早期系列版本:
zi
”目录。这是更新的数据文件。zi.tzdata*
”目录。这是被替换的旧数据。java -jar tzupdater.jar -V
命令获取当前安装的时区数据版本。zi
”目录重命名为“zi.tzdata2016b
”之类,或第 3 步中的命令指定的任何版本。确保这不会与旧的数据目录冲突。zi
”。java -jar tzupdater.jar -V
验证当前活动时区数据中的更改。对于 JDK 8 及之后的系列版本:
tzdb.dat
”文件。这是更新的数据文件。tzdb.dat.<oldtzdataversion>
”文件。这是被替换的旧数据文件。java -jar tzupdater.jar -V
命令获取当前安装的时区数据版本。tzdb.dat
”文件重命名为“tzdb.dat.<newtzdataversion>
”或者第 3 步中的命令指定的任何版本。确保此名称不会与旧的数据文件冲突。tzdb.dat
”。java -jar tzupdater.jar -V
验证当前活动时区数据中的更改。以下链接指向 Oracle Corporation 提供的有关时区及 DST 更改以及它们对 Java 平台和其他 Oracle 产品的影响的信息:
以下外部链接提供了有关时区和 DST 的一般信息: