pocas notas. Las propiedades del sistema están diseñadas para eso, pero TENGA en cuenta que es una operación privilegiada y que los applets / webstart / código de caja de arena no podrán ejecutarlo (obteniendo SecurityException). Normalmente le gustaría ejecutarlo de manera similarAccessController.doPrivileged(new PrivilegedAction<String>(...));
bestsss
3
@bestsss Mientras que algunas propiedades sólo están disponibles para los applets que son de confianza: java.specification.version, java.versiony java.vm.versionestán disponibles a un applet de arena en caja, o por lo menos eran como de 1.6.0_23. Vea mi respuesta para más detalles.
Andrew Thompson
También es algo que puede funcionar java -version:)
Esa llamada JMX devuelve el equivalente de "java.vm.version", no "java.version". Suelen ser (pero no necesariamente) iguales.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () puede ser más preciso.
auntyellow
¿Cuándo son diferentes, @AlexMiller? Eso suena interesante.
DavidS
1
De hecho, diría que no son lo mismo. Java.vm.version es el número de versión de jvm, algo así como "25.0-b70", mientras que java.version es la versión normal del lenguaje java que está acostumbrado a ver "1.8.0".
Alex Miller
3
Vale la pena señalar que Java 9 cambiará el valor devuelto de esta cadena.
AlBlue
54
Parece el java.specification.version es el mejor para el trabajo.
@ User8461 Tal vez debería presentar un informe de error con quien supervise el JDK abierto. Para ser honesto, no he visto mucho sentido en averiguar ese valor. Aquí está actualmente 25.45-b02... lo que no significa nada (no proporciona información útil) para mí.
Andrew Thompson
53
Utilizar:
System.getProperty("java.version");
Where java.versionse puede reemplazar con una de las muchas otras propiedades del sistema relacionadas con la versión actual de Java. Aquí hay una tabla de ellos:
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
Fuentes:
Salida de java -XshowSettings:all -versionpara una variedad de versiones de JVM.
Dependiendo de lo que uno necesite, las otras respuestas pueden ayudar.
En mi caso, no lo hicieron. Estaba buscando la información de la versión "totalmente calificada" de un IBM JDK.
Entonces, la respuesta "real" puede ser: simplemente descargue todas las propiedades del sistema y verifique si hay alguna que le proporcione lo que está buscando.
En mi caso; Descubrí que IBM JDK conoce un
Propiedad: java.fullversion
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Compressed References 20161013_322271 (JIT habilitado, AOT habilitado)
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
yjava.vm.version
están disponibles a un applet de arena en caja, o por lo menos eran como de1.6.0_23
. Vea mi respuesta para más detalles.java -version
:)Respuestas:
System.getProperty("java.version")
devuelve lo que necesita.También puede usar JMX si lo desea:
ManagementFactory.getRuntimeMXBean().getVmVersion()
fuente
Parece el
java.specification.version
es el mejor para el trabajo.P.EJ
fuente
java.vm.version
es nulo en openjdk-11-headless25.45-b02
... lo que no significa nada (no proporciona información útil) para mí.Utilizar:
Where
java.version
se puede reemplazar con una de las muchas otras propiedades del sistema relacionadas con la versión actual de Java. Aquí hay una tabla de ellos:Fuentes:
java -XshowSettings:all -version
para una variedad de versiones de JVM.System.getProperties()
fuente
Simplemente un caso de llamada
System.getProperty("java.version")
.fuente
Ejemplos usando
java.version
,java.specification.version
yjava.runtime.version
: Obtener la versión de java en tiempo de ejecución .fuente
A continuación, el código de Java devuelve
JVM
versiones que están disponibles en su IDE actualsalida:
fuente
Dependiendo de lo que uno necesite, las otras respuestas pueden ayudar.
En mi caso, no lo hicieron. Estaba buscando la información de la versión "totalmente calificada" de un IBM JDK.
Entonces, la respuesta "real" puede ser: simplemente descargue todas las propiedades del sistema y verifique si hay alguna que le proporcione lo que está buscando.
En mi caso; Descubrí que IBM JDK conoce un
Propiedad: java.fullversion
fuente
Simplemente llama
Salida de ejemplo:
fuente
La información sobre las versiones se almacena como propiedades de
System
clase.http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
fuente
System.getProperty ("sun.arch.data.model");
Control de Java de 32 bits y 64 bits
Salida:
fuente