当前位置: 首页 > 面试题库 >

Java-查找使用中的tzdata版本,而不考虑JRE版本

井旺
2023-03-14
问题内容

我们有一个简单的实用程序应用程序,可读取JRE中使用的所有时区数据并将其全部显示在简单表中。我们需要为即将发布的产品发行版使用JRE的较旧版本(6_24)(显然是由于其他问题),但是我们还需要在该发行版中包括较新的时区更新(否则将包含在6_29中)
)。我们已经打包了将要安装的私有JRE,所以使用TZUpdater工具将时区更新到该私有JRE 中不是问题-
问题是正在读取/验证哪个tzdata版本(例如tzdata2010o,tzdata2011k)与实用程序应用程序一起读取(即,正在运行该应用程序的JRE中使用哪个版本)。该应用程序当前显示
JRE版本 在标题栏中,但是随着时区的更新,这已经不足以确定正在使用哪个 时区数据 版本。

我研究了TimeZone类,但似乎未提供此信息-
也许有一个系统属性可以保存此信息?TZUpdater工具知道正在使用哪个版本,因此它必须在某处可用-
我无法想象他们会分析性地确定更新工具中正在使用哪个版本…有人知道在哪里可以找到此信息吗?


问题答案:

在我的一个JRE中,有一个JRE_PATH\lib\zi名为的文件ZoneInfoMappings。在第一行中,它将显示您要查找的数据。

我将寻找一种不那么骇人听闻的方法,如果我发现了一些东西,将会更新答案。

更新:似乎没有API来获取此数据。但是,该类sun.util.calendar.ZoneInfoFile中的代码显示了如何解析它。



 类似资料:
  • 问题内容: 我正在Windows Surface Pro上测试Java。表面Pro拥有的Java 7更新55,但 不 具备安装JDK。 我使用命令行在MacBook上编译了一个程序。MacBook具有Java 8 Update 5,并且包含JDK(显然是因为我在MBP上编译)。 将程序从MackBook移到Surface Pro时,出现以下错误。在这里,“移动程序”意味着将两个文件复制到新机器上并

  • 问题内容: 尽管我还不是真正的Java开发人员,但我现在应该知道这一点,但是我仍然很困惑。我的问题分为两部分: 所谓的(如我所见) “ Sun JDK”,OpenJDK和GCJ有 什么区别? 在不同的时间,我看到了下面的每一个,使您很难理解哪个版本号实际适用于什么。有人可以帮我解决这个问题吗? Java 6 Java 1.6 JDK 6 JDK 1.6 JRE 1.6 JVM 11.0 注意:我确

  • 它提供了OpenJDK JRE的版本。是否可以使系统使用Oracle jre(手动安装)而不是OpenJDK jre(保持系统中安装)

  • 问题内容: 我想使用MAMP的PHP版本,而不是Mac上安装的默认版本。我尝试使用 但出现“文件存在”错误。解决此问题的最佳方法是什么,因此我可以只键入php而不是完整路径? 问题答案: 我不建议您尝试修改命令行上调用的PHP的默认版本。如果您决定升级操作系统,这样做可能会破坏系统的其他部分,并在将来给您带来问题。 有一种替代方案可以满足您的需求。您可以为MAMP的php 5.3副本创建别名。就我

  • 问题内容: 确定计算机上安装的JRE版本对于用户要运行的应用程序而言是否足够高的最佳方法是什么?有没有办法使用纯Java的东西呢?我希望该解决方案可以在Windows / Linux / MacOSX上使用-如果JRE版本太低,则应显示一条消息。目前,如果我尝试在Java 1.5上运行它(该应用程序是为Java 1.6构建的),我会遇到一个例外。如果没有通用解决方案,那么在Windows上最好的方

  • 问题内容: 为什么我得到这个? 我该如何解决? 问题答案: 重新安装JDK并在JDK上设置系统变量JAVA_HOME。(例如C:\ tools \ jdk7), 然后将JAVA_HOME变量添加到PATH系统变量中 在命令行输入 和 验证安装是否成功完成。