在运行时获取 Java 版本

2022-08-31 06:58:41

我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我使用以下条件:

if (System.getProperty("java.version").startsWith("1.5.")) {
    ...
} else {
    ...
}

这是否适用于其他 JVM?有没有更好的方法来检查这一点?


答案 1

java.version是存在于每个 JVM 中的系统属性。它有两种可能的格式:

  • Java 8 或更低版本:、 、 、1.6.0_231.7.01.7.0_801.8.0_211
  • Java 9 或更高版本:、 、 、9.0.111.0.41212.0.1

下面是提取主要版本的技巧:如果它是版本字符串,则在字符串的索引 2 处提取字符。如果是版本字符串,请将字符串剪切为其第一个点字符(如果存在)。1.x.y_zx.y.z

private static int getVersion() {
    String version = System.getProperty("java.version");
    if(version.startsWith("1.")) {
        version = version.substring(2, 3);
    } else {
        int dot = version.indexOf(".");
        if(dot != -1) { version = version.substring(0, dot); }
    } return Integer.parseInt(version);
}

现在,您可以更舒适地检查版本:

if(getVersion() < 6) {
    // ...
}

答案 2

如何从包元信息中获取版本:

String version = Runtime.class.getPackage().getImplementationVersion();

打印出如下内容:

1.7.0_13


推荐