несколько заметок. Системные свойства предназначены для этого, но имейте в виду, что это привилегированная операция, и код апплеты / веб-запуск / песочница не сможет ее выполнить (получение SecurityException). Обычно вы хотели бы запустить его аналогичным образомAccessController.doPrivileged(new PrivilegedAction<String>(...));
bestsss
3
@bestsss Хотя некоторые свойства доступны только для апплетов, доверенные: java.specification.version, java.versionи java.vm.versionвсе доступны для апплета песка в штучной упаковке, или по крайней мере , они были из 1.6.0_23. Подробнее см. Мой ответ .
Эндрю Томпсон
Также вещь, которая может сработать java -version:)
Этот вызов JMX возвращает эквивалент «java.vm.version», а не «java.version». Обычно (но не обязательно) они совпадают.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () может быть более точным.
auntyellow
Когда они разные, @AlexMiller? Это звучит интересно.
DavidS 08
1
На самом деле, я бы сказал, что они не такие. Java.vm.version - это номер версии jvm, что-то вроде "25.0-b70", тогда как java.version - это обычная версия языка java, которую вы привыкли видеть "1.8.0".
Alex Miller
3
Стоит отметить, что Java 9 изменит возвращаемое значение из этой строки.
AlBlue
54
Кажется, java.specification.versionэто лучший вариант для работы.
java.vm.versionимеет значение null в openjdk-11-headless
User8461 09
@ User8461 Может быть, вам стоит сообщить об ошибке тому, кто курирует открытый JDK. Честно говоря, я не видел особого смысла в обнаружении этой ценности. Вот он сейчас 25.45-b02... что для меня ничего не значит (не дает никакой полезной информации).
Эндрю Томпсон
53
Использование:
System.getProperty("java.version");
Где java.versionможет быть заменено одним из многих других системных свойств, связанных с текущей версией Java. Вот их таблица:
Property Value (OpenJDK 12) Value (Oracle JRE 8u201) Value (Sun JRE 5u22) Description
------------------------------- ----------------------------------------- --------------------------------------- ---------------------------------------------------- ---------------------------------------------------------------------------------------------------------------
java.version "12" "1.8.0_201" "1.5.0_22" Java Runtime Environment version, which may be interpreted as a Runtime.Version
java.version.date "2019-03-19" null null Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD format, which may be interpreted as a LocalDate
java.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Runtime Environment vendor
java.vendor.version null null null Java vendor version
java.vendor.url "https://java.oracle.com/" "http://java.oracle.com/" "http://java.sun.com/" Java vendor URL
java.vendor.url.bug "https://bugreport.java.com/bugreport/" "http://bugreport.sun.com/bugreport/" "http://java.sun.com/cgi-bin/bugreport.cgi" Undocumented
java.specification.name "Java Platform API Specification" "Java Platform API Specification" "Java Platform API Specification" Java Runtime Environment specification name
java.specification.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Runtime Environment specification vendor
java.specification.version "12" "1.8" "1.5" Java Runtime Environment specification version, whose value is the feature element of the runtime version
java.vm.name "OpenJDK 64-Bit Server VM" "Java HotSpot(TM) 64-Bit Server VM" "Java HotSpot(TM) 64-Bit Server VM" Java Virtual Machine implementation name
java.vm.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Virtual Machine implementation vendor
java.vm.version "12+33" "25.201-b09" "1.5.0_22-b03" Java Virtual Machine implementation version which may be interpreted as a Runtime.Version
java.vm.info "mixed mode, sharing" "mixed mode" "mixed mode" Undocumented
java.vm.specification.name "Java Virtual Machine Specification" "Java Virtual Machine Specification" "Java Virtual Machine Specification" Java Virtual Machine specification name
java.vm.specification.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Virtual Machine specification vendor
java.vm.specification.version "12" "1.8" "1.0" Java Virtual Machine specification version, whose value is the feature element of the runtime version
java.runtime.name "OpenJDK Runtime Environment" "Java(TM) SE Runtime Environment" "Java(TM) 2 Runtime Environment, Standard Edition" Undocumented
java.runtime.version "12+33" "1.8.0_201-b09" "1.5.0_22-b03" Undocumented
java.class.version "56.0" "52.0" "49.0" Java class format version number
jdk.debug "release" null null Undocumented
sun.java.launcher "SUN_STANDARD" "SUN_STANDARD" "SUN_STANDARD" Undocumented
sun.management.compiler "HotSpot 64-Bit Tiered Compilers" "HotSpot 64-Bit Tiered Compilers" "HotSpot 64-Bit Server Compiler" Undocumented
Источники:
Вывод java -XshowSettings:all -versionдля различных версий JVM.
Integer vers =Integer.parseInt(System.getProperty("java.version").split("\\.")[1]);String bitMode =System.getProperty("sun.arch.data.model").toString();System.out.println(vers);System.out.println(bitMode);
AccessController.doPrivileged(new PrivilegedAction<String>(...));
java.specification.version
,java.version
иjava.vm.version
все доступны для апплета песка в штучной упаковке, или по крайней мере , они были из1.6.0_23
. Подробнее см. Мой ответ .java -version
:)Ответы:
System.getProperty("java.version")
возвращает то, что вам нужно.Вы также можете использовать JMX, если хотите:
ManagementFactory.getRuntimeMXBean().getVmVersion()
источник
Кажется,
java.specification.version
это лучший вариант для работы.НАПРИМЕР
источник
java.vm.version
имеет значение null в openjdk-11-headless25.45-b02
... что для меня ничего не значит (не дает никакой полезной информации).Использование:
Где
java.version
может быть заменено одним из многих других системных свойств, связанных с текущей версией Java. Вот их таблица:Источники:
java -XshowSettings:all -version
для различных версий JVM.System.getProperties()
источник
Просто случай звонка
System.getProperty("java.version")
.источник
Примеры использования
java.version
,java.specification.version
иjava.runtime.version
: Получение версии java во время выполнения .источник
Ниже java-код возвращает
JVM
версии, доступные в вашей текущей среде IDE.вывод:
источник
В зависимости от того, что нужно одному, могут помочь другие ответы.
В моем случае - нет. Я искал "полную" информацию о версии IBM JDK.
Итак, «настоящий» ответ может быть таким: просто сбросьте все системные свойства и проверьте, есть ли такое, которое дает вам то, что вы ищете.
В моем случае; Я обнаружил, что IBM JDK знает
Свойство: java.fullversion
источник
Просто позвони,
Пример вывода:
источник
Информация о версиях хранится как свойства
System
класса.http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
источник
System.getProperty ( "sun.arch.data.model");
32-битное и 64-битное управление Java
Вывод :
источник