【问题标题】:How to know JDK version from within Java code如何从 Java 代码中了解 JDK 版本
【发布时间】:2011-06-06 01:21:17
【问题描述】:

如何从 Java 代码中了解 JDK 版本

【问题讨论】:

    标签: version java


    【解决方案1】:

    我想你的意思只是 Java 版本,在这种情况下试试这个:

    String version = System.getProperty("java.version");
    

    【讨论】:

      【解决方案2】:

      依赖于 java.version 字符串而不是向人类展示是脆弱的,如果在另一个 Java 实现上运行将会中断。

      唯一以编程方式可靠的方法是使用反射仔细询问给定设施是否可用,然后相应地选择适当的代码。

      【讨论】:

      • 你能举例说明什么时候会失败吗?
      • @Jesse,我宁愿反过来说。你会设置什么规则来分析 java.version 字符串?
      • @Jesse,我不知道这个属性。但是,我无法从 JLS 中快速查看它是否保证存在并包含有效数字。也许你知道它在哪里说的?
      • @Jesse,如果这仅适用于基于 Hotspot 的 JVM,那么这里的关键问题。我不能马上说出来。
      • 不要像@JesseBarnum 那样使用Float.valueOf。这对我来说失败了,因为由于舍入错误,1.8>=1.8 为我返回了 false。请改用.compareTo("1.8")>=0
      【解决方案3】:

      如果您还需要知道位版本(32 位或 64 位),并且您正在运行 hotSpot JVM,您可以尝试以下代码:

      System.getProperty("sun.arch.data.model")

      没有被授权者认为它将适用于其他 Java 实现而不是 hotSpot。

      【讨论】: