algumas notas. As propriedades do sistema são destinadas a isso, mas tenha em mente que é uma operação privilegiada e applets / webstart / código sand boxed não serão capazes de executá-lo (obtendo SecurityException). Normalmente, você gostaria de executá-lo de maneira semelhanteAccessController.doPrivileged(new PrivilegedAction<String>(...));
bestsss
3
@bestsss Embora algumas propriedades estão disponíveis só para applets que são de confiança: java.specification.version, java.version& java.vm.versionsão todos disponíveis para um applet caixas de areia, ou, pelo menos, eles eram como de 1.6.0_23. Veja minha resposta para mais detalhes.
Essa chamada JMX retorna o equivalente a "java.vm.version", não "java.version". Geralmente (mas não necessariamente) são iguais.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () pode ser mais preciso.
até
Quando eles são diferentes, @AlexMiller? Isso parece interessante.
DavidS
1
Na verdade, eu diria que eles não são iguais. O java.vm.version é o número da versão jvm, algo como "25.0-b70", enquanto o java.version é a versão normal da linguagem java que você está acostumado a ver "1.8.0".
Alex Miller
3
Vale a pena notar que o Java 9 irá alterar o valor retornado desta string.
AlBlue de
54
Parece que java.specification.versioné o melhor para o trabalho.
@ User8461 Talvez você deva levantar um relatório de bug com quem supervisiona o JDK aberto. Para ser honesto, não vejo muito sentido em descobrir esse valor. Aqui está atualmente 25.45-b02.. o que não significa nada (não fornece nenhuma informação útil) para mim.
Andrew Thompson
53
Usar:
System.getProperty("java.version");
Onde java.versionpode ser substituído por uma das muitas outras propriedades do sistema relacionadas à versão atual do Java. Aqui está uma tabela deles:
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
Fontes:
Saída java -XshowSettings:all -versionpara uma variedade de versões de JVM.
Dependendo do que se precisa, as outras respostas podem ajudar.
No meu caso, eles não fizeram. Eu estava procurando informações sobre a versão "totalmente qualificada" de um IBM JDK.
Portanto, a resposta "real" pode ser: apenas descarte todas as propriedades do sistema e verifique se há alguma que forneça o que você está procurando.
No meu caso; Descobri que o IBM JDK conhece um
Propriedade: java.fullversion
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Referências compactadas 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
&java.vm.version
são todos disponíveis para um applet caixas de areia, ou, pelo menos, eles eram como de1.6.0_23
. Veja minha resposta para mais detalhes.java -version
:)Respostas:
System.getProperty("java.version")
retorna o que você precisa.Você também pode usar JMX se desejar:
ManagementFactory.getRuntimeMXBean().getVmVersion()
fonte
Parece que
java.specification.version
é o melhor para o trabalho.POR EXEMPLO
fonte
java.vm.version
é nulo em openjdk-11-headless25.45-b02
.. o que não significa nada (não fornece nenhuma informação útil) para mim.Usar:
Onde
java.version
pode ser substituído por uma das muitas outras propriedades do sistema relacionadas à versão atual do Java. Aqui está uma tabela deles:Fontes:
java -XshowSettings:all -version
para uma variedade de versões de JVM.System.getProperties()
fonte
Simplesmente um caso de ligação
System.getProperty("java.version")
.fonte
Exemplos usando
java.version
,java.specification.version
ejava.runtime.version
: Obtendo a versão do java em tempo de execução .fonte
Abaixo o código Java retorna as
JVM
versões que estão disponíveis em seu IDE atualresultado:
fonte
Dependendo do que se precisa, as outras respostas podem ajudar.
No meu caso, eles não fizeram. Eu estava procurando informações sobre a versão "totalmente qualificada" de um IBM JDK.
Portanto, a resposta "real" pode ser: apenas descarte todas as propriedades do sistema e verifique se há alguma que forneça o que você está procurando.
No meu caso; Descobri que o IBM JDK conhece um
Propriedade: java.fullversion
fonte
Basta ligar,
Saída de exemplo:
fonte
As informações sobre as versões são armazenadas como propriedades da
System
classe.http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
fonte
System.getProperty ("sun.arch.data.model");
Controle Java de 32 bits e 64 bits
Resultado :
fonte