Получение версии Java во времени выполнения

Я должен работать вокруг ошибки Java в JDK 1.5, который был зафиксирован в 1,6. Я использую следующее условие:

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

Это будет работать на другой JVMs? Существует ли лучший способ проверить это?

119
задан Boann 4 March 2017 в 00:07
поделиться

3 ответа

Похоже, в этих статьях предполагается, что проверка префикса 1.5 или 1.6 должна работать, поскольку он следует за правильной версией соглашение об именовании.

Технические статьи Sun

39
ответ дан 24 November 2019 в 01:48
поделиться

Не знаю другого способа проверить это, но это: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties () "подразумевает, что" java.version "является стандартным системным свойством, поэтому я ожидаю, что оно будет работать с другими JVM.

3
ответ дан 24 November 2019 в 01:48
поделиться

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) {
    // ...
}
71
ответ дан 24 November 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: