此问题与缺少版本信息问题无关.
我创建后修改tzdata2016g.tar.gz(如描述在这里),我试图更新时区:
$ sudo java -jar tzupdater.jar -v -l file:///tmp/tzupdater-2.1.0/tzdata2016g.tar.gz
Run Code Online (Sandbox Code Playgroud)
但我有一个例外.上面命令的输出如下:
Using file:///tmp/tzupdater-2.1.0/tzdata2016g.tar.gz as source for tzdata bundle.
java.home: /usr/lib/jvm/java-8-oracle/jre
java.vendor: Oracle Corporation
java.version: 1.8.0_101
tzupdater version 2.1.0-b04
JRE tzdata version: tzdata2016d
Downloaded file to /tmp/tz.tmp/tzdata.tar.gz
java.io.FileNotFoundException: /tmp/tz.tmp/tzdata2016g/northamerica (Not a directory)
Exception in thread "main" com.sun.tools.tzupdater.TzRuntimeException: java.io.FileNotFoundException: /tmp/tz.tmp/tzdata2016g/northamerica (Not a directory)
at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:662)
Caused by: java.io.FileNotFoundException: /tmp/tz.tmp/tzdata2016g/northamerica (Not a directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
at com.sun.tools.tzupdater.ExternalModule.extractFiles(ExternalModule.java:103)
at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:209)
at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:643)
Run Code Online (Sandbox Code Playgroud)
如果我/tmp/tz.tmp/tzdata2016g手动放置数据,tzupdater尝试在最后创建/tmp/tz.tmp_1/tzdata2016g相同的异常.
我该如何解决这个问题?
我想你可能在存档中添加了一个tzupdater不期望的根目录.从https://www.iana.org/time-zones/repository/releases/tzdata2016g.tar.gz下载的源tzdata文件的结构如下所示:
$ tar --list -zf tzdata2016g.tar.gz
CONTRIBUTING
...
australasia
europe
northamerica
...
leapseconds.awk
zoneinfo2tdf.pl
Run Code Online (Sandbox Code Playgroud)
这就是所有文件都需要直接在存档的根目录中.