実行時にJavaバージョンを取得する 質問する

実行時にJavaバージョンを取得する 質問する

JDK 1.5 の Java バグを回避する必要がありますが、これは 1.6 で修正されました。次の条件を使用します。

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

これは他の JVM でも機能しますか? これを確認するより良い方法はありますか?

ベストアンサー1

java.versionシステムプロパティすべての JVM に存在します。これには 2 つの形式があります。

  • Java 8以下: 1.6.0_23、、、1.7.01.7.0_801.8.0_211
  • Java 9以降: 9.0.1、、、11.0.41212.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) {
    // ...
}

おすすめ記事