Comment trouver la version JVM à partir d'un programme?


Je veux écrire un exemple de fichier Java dans lequel je veux connaître la version JVM dans laquelle la classe est en cours d'exécution. Est-il possible?

Author: Andrew Thompson, 2011-02-24

10 answers

System.getProperty("java.version") retourne ce dont vous avez besoin.

Vous pouvez également utiliser JMX si vous voulez:

ManagementFactory.getRuntimeMXBean().getVmVersion()

 95
Author: AlexR, 2011-02-24 10:10:45

Il semble que le java.specification.version soit 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é. Le 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
 45
Author: Andrew Thompson, 2014-06-13 10:51:06
System.getProperty("java.version")

Voici une liste des propriétés du système standard , y compris:

  • java.vm.specification.version Version de spécification de machine virtuelle Java
  • java.vm.specification.vendor Fournisseur de spécifications de machine virtuelle Java
  • java.vm.specification.name Nom de spécification de machine virtuelle Java
  • java.vm.version Version d'implémentation de la machine virtuelle Java
  • java.vm.vendor Fournisseur d'implémentation de machine virtuelle Java
  • java.vm.name Nom de l'implémentation de la machine virtuelle Java
  • java.specification.version Java Version de spécification d'environnement d'exécution
  • java.specification.vendor Fournisseur de spécification d'environnement d'exécution Java
  • java.specification.name Nom de la spécification de l'environnement d'exécution Java
 29
Author: Sean Patrick Floyd, 2016-11-04 21:18:25

Simplement un cas d'appel System.getProperty("java.version").

 12
Author: Finbarr, 2011-02-24 10:09:28

Exemples utilisant java.version, java.specification.version et java.runtime.version: Obtenir la version de java dans l'exécution .

 1
Author: mvanle, 2017-05-23 11:47:14

Ci-dessous, le code java renvoie JVM les versions disponibles dans votreE 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
 1
Author: , 2016-05-09 13:34:28

Selon ce dont on a besoin, les autres réponses peuvent aider.

Dans mon cas, ils ne l'ont pas fait. Je cherchais les informations de version "entièrement qualifiées" d'un JDK IBM.

Donc, la "vraie" réponse peut être: il suffit de vidertoutes les propriétés du système et de vérifier s'il y en a une qui vous donne ce que vous cherchez.

Dans mon cas; j'ai trouvé que le JDK IBM connaît un

Propriété: java.version complète

JRE 1.8.0 IBM J9 2.8 Linux amd64-64 compressé Références 20161013_322271 (JIT activé, AOT activé)

J9VM - R28_Java8_SR3_20161013_1635_B322271

JIT - tr.r14.Java.vert_20161011_125790

GC-R28_Java8_SR3_20161013_1635_B322271_CMPRSS J9CL-20161013_322271

 1
Author: GhostCat, 2017-01-18 07:06:05

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

 0
Author: Abbath, 2016-04-20 12:07:27

Système.getProperty ("soleil.Arch.données.modèle");

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
 0
Author: umut.bayram, 2016-12-12 09:02:47

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
 0
Author: snr, 2017-06-30 12:58:48