在Java 8(jdk1.8.0_32)中,时区文件(在jre/lib/zi下)不再像Java 7u67中那样存在。
有人知道他们为什么不在那里吗?
还是需要下载不同的设置?我使用JDK安装程序(JDK-8u31-windows-i586 resp.x64.exe)。
更详细地说,从1.8版开始的Java版本中删除lib/zi目录的动机显然是为了减轻维护负担。1.4中引入的lib/zi目录和1.8中引入的新tzdb.dat文件的维护成本太高,无法继续使用。另请参阅JSR-310邮件归档中的这封邮件。
另一个原因是JEP 151中制定的动机,其目标是减少lib/zi库的内存足迹和启动时间。这个目标最终通过放弃lib/zi库而采用更紧凑的新tzdb.dat文件来解决,该文件的大小约为100kByte。
还要记住,旧的lib/zi结构已经产生了直到2037年的偏移过渡。这种限制源于使用有限的整数类型,因此在不久的将来,整个结构已经过时,如果Oracle决定保留它,则需要进行一般重构。
Java 8引入了日期和时间API,这可能会使这些文件过时。