Je souhaite écrire un exemple de fichier Java) dans lequel je souhaite connaître la version de la machine virtuelle Java dans laquelle la classe est en cours d'exécution. Existe-t-il un moyen?
System.getProperty("Java.version")
renvoie ce dont vous avez besoin.
Vous pouvez également utiliser JMX si vous voulez:
ManagementFactory.getRuntimeMXBean().getVmVersion()
Il semble que le Java.specification.version
est le meilleur pour le travail.
PAR EXEMPLE. à partir d'une applet sur l'un de mes anciens sites:
Java.specification.version 1.6
Java.version 1.6.0_23
Java.vm.version 19.0-b09
Java.runtime.version unknown
La valeur unknown
pour Java.runtime.version
signifie simplement que l'applet n'est pas approuvé. La voici dans la version de confiance:
Java.specification.version 1.6
Java.version 1.6.0_23
Java.vm.version 19.0-b09
Java.runtime.version 1.6.0_23-b05
Utilisation:
System.getProperty("Java.version");
Où Java.version
Peut être remplacé par l'une des nombreuses autres propriétés système liées à la version actuelle Java. Voici un tableau de ces propriétés:
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
Sources:
Java -XshowSettings:all -version
Pour diverses versions de JVM.System.getProperties()
Simplement un cas d’appel System.getProperty("Java.version")
.
Au-dessous de Java renvoie les versions de JVM
disponibles dans votre IDE actuel)
List<VirtualMachineDescriptor> descriptors = VirtualMachine.list();
for (VirtualMachineDescriptor descriptor : descriptors) {
System.out.println("Found JVM: " + descriptor.displayName());
try {
VirtualMachine vm = VirtualMachine.attach(descriptor);
String version = vm.getSystemProperties().getProperty("Java.runtime.version");
System.out.println(" Runtime Version: " + version);
String connectorAddress = vm.getAgentProperties().getProperty("com.Sun.management.jmxremote.localConnectorAddress");
if (connectorAddress == null) {
connectorAddress = vm.getAgentProperties().getProperty("com.Sun.management.jmxremote.localConnectorAddress");
}
JMXServiceURL url = new JMXServiceURL(connectorAddress);
JMXConnector connector = JMXConnectorFactory.connect(url);
MBeanServerConnection mbs = connector.getMBeanServerConnection();
ObjectName threadName = new ObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
Integer threadCount = (Integer)mbs.getAttribute(threadName, "ThreadCount");
System.out.println(" Thread count: " + threadCount);
}
catch (Exception e) {
// ...
}
sortie:
Found JVM: /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.Eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -os linux -ws gtk -Arch x86_64 -showsplash -launcher /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE/STS -name STS --launcher.library /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.Eclipse.equinox.launcher.gtk.linux.x86_64_1.1.300.v20150602-1417/Eclipse_1612.so -startup /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.Eclipse.equinox.launcher_1.3.100.v20150511-1540.jar --launcher.overrideVmargs -exitdata 1ad000f -product org.springsource.sts.ide -vm /usr/bin/Java -vmargs -Dosgi.requiredJavaVersion=1.7 -Xms40m -XX:MaxPermSize=256m -Xverify:none -Xmx1200m -jar /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.Eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
Runtime Version: 1.8.0_91-b14
Found JVM: com.intellij.idea.Main
Runtime Version: 1.8.0_91-b14
Found JVM: Test
Runtime Version: 1.7.0_80-b15
Selon ce dont on a besoin, les autres réponses peuvent aider.
Dans mon cas, ils ne l'ont pas fait. Je recherchais les informations de version "entièrement qualifiée" d'un JDK IBM.
La réponse "réelle" peut donc être: il suffit de dump all propriétés du système et de vérifier s’il en existe une qui vous donne ce que vous recherchez.
Dans mon cas; J'ai trouvé que le JDK IBM connaît un
Propriété: Java.fullversion
JRE 1.8.0 Références compressées IBM J9 2.8 Linux AMD64-64 20161013_322271 (JIT activé, AOT activé)
J9VM - R28_Java8_SR3_20161013_1635_B322271
JIT - tr.r14.Java.green_20161011_125790
GC - R28_Java8_SR3_20161013_1635_B322271_CMPRSS J9CL - 20161013_322271
Exemples utilisant Java.version
, Java.specification.version
et Java.runtime.version
: Obtention de la version de Java au moment de l'exécution .
Il suffit d'appeler,
System.out.println(System.getProperty("Java.specification.version"));
System.out.println(System.getProperty("Java.runtime.version"));
Exemple de sortie:
9
9+176
System.getProperty ("Sun.Arch.data.model");
Contrôle Java 32 bits et 64 bits
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);
Sortie:
6
32
Les informations sur les versions sont stockées en tant que propriétés de la classe System
.
http://docs.Oracle.com/javase/6/docs/api/Java/lang/System.html#getProperties%28%29