Как программно получить версию Java с информацией об обновлении

$java -version

печатает как показано ниже

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

Информация, которая меня интересует, является полной версией Java, System.getProperties(), похоже, не имеет этой информации. У него есть только версия до _, а не информация об обновлении, которая в моем случае 40.

EDIT: Когда я запускаю тестовый код, System.out.println(System.getProperty("java.version"); печатает полную версию. Но я работаю над большой кодовой базой, в которой не могу получить тот же результат. Я проверил базу кода, если свойство каким-то образом перезаписано в какой-то момент, но ничего не смог найти.

EDIT_2: я выяснил, что java.version печатает 1.8.0_40, когда я вручную компилирую код с помощью javac, а затем запускаю его с помощью java на терминале. Однако он печатает только 1.8.0, когда я запускаю его через IntelliJ.


person harunurhan    schedule 29.04.2016    source источник
comment
Пожалуйста, проверьте эту тему stackoverflow.com/questions/5103121/   -  person Stan    schedule 29.04.2016
comment
Это может быть глупо, но уверены ли вы, что в той версии Java, которую вы проверяете, есть какие-либо обновления для показа?   -  person m.antkowicz    schedule 29.04.2016
comment
@m.antkowicz да, смотрите мое второе редактирование :)   -  person harunurhan    schedule 29.04.2016


Ответы (2)


Вы можете получить полную версию, используя это свойство:

java.runtime.version

Вот пример:

public class Test {

    public static void main(String[] args) {
        System.out.println(System.getProperty("java.runtime.version"));
    }
}

На моей машине я получаю следующий вывод:

1.8.0_92-b14

Если вам нужна только часть до -, используйте следующее системное свойство:

java.version

Это выведет:

1.8.0_92

person flavio.donze    schedule 29.04.2016

введите здесь описание изображения

Используйте эти свойства с приведенным ниже кодом

String version = System.getProperty("java.version");
        System.out.println("version : "+version);

String vendor = System.getProperty("java.vendor");
        System.out.println("java Vendor : "+vendor);

String vm = System.getProperty("java.vm.name");
        System.out.println("java vm name : "+vm);

Вывод:

версия : 15

Производитель Java: корпорация Oracle.

java vm имя: 64-разрядная виртуальная машина сервера OpenJDK

=======

для получения дополнительной команды см. прикрепленное изображение

person Adarsh Shukla    schedule 28.07.2021