一尘不染

在运行时获取Java版本

java

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

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

这对其他JVM有用吗?有更好的方法来检查吗?


阅读 606

收藏
2020-03-16

共1个答案

一尘不染

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

  • Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211
  • Java的9或更高:9.0.1,11.0.4,12,12.0.1

这是提取主要版本的技巧:如果它是1.x.y_z版本字符串,则提取字符串索引2处的字符。如果是x.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) {
    // ...
}
2020-03-16