Wie finde ich die JVM-Version eines Programms?

Lesezeit: 6 Minuten

Wie finde ich die JVM Version eines Programms
java_geek

Ich möchte eine Beispiel-Java-Datei schreiben, in der ich die JVM-Version wissen möchte, in der die Klasse ausgeführt wird. Gibt es einen Weg?

  • wenige Notizen. Systemeigenschaften sind dafür gedacht, aber denken Sie daran, dass es sich um eine privilegierte Operation handelt und Applets/Webstart/Sandbox-Code sie nicht ausführen können (SecurityException erhalten). Normalerweise möchten Sie es auf ähnliche Weise ausführen AccessController.doPrivileged(new PrivilegedAction<String>(...));

    – bestes

    24. Februar 2011 um 11:34 Uhr

  • @bestsss Während einige Eigenschaften nur für vertrauenswürdige Applets verfügbar sind: java.specification.version, java.version & java.vm.version sind alle für ein Sandbox-Applet verfügbar, oder zumindest waren sie ab sofort verfügbar 1.6.0_23. Siehe meine Antwort für weitere Details.

    – Andrew Thompson

    13. Juni 2014 um 10:53 Uhr

  • Auch eine Sache, die funktionieren könnte: java -version 🙂

    – schlechtp

    23. Februar 2017 um 11:41 Uhr

  • Mögliches Duplikat von Java-Version zur Laufzeit abrufen

    – BuZZ-dEE

    15. August 2019 um 11:40 Uhr

System.getProperty("java.version") gibt zurück, was Sie brauchen.

Sie können auch JMX verwenden, wenn Sie möchten:

ManagementFactory.getRuntimeMXBean().getVmVersion()

  • Dieser JMX-Aufruf gibt das Äquivalent von „java.vm.version“ zurück, nicht „java.version“. Diese sind normalerweise (aber nicht notwendigerweise) gleich.

    – Alex Müller

    21. Juni 2013 um 15:54 Uhr

  • ManagementFactory.getRuntimeMXBean().getSpecVersion() ist möglicherweise genauer.

    – tantegelb

    9. Dezember 2014 um 6:04 Uhr

  • Wann sind sie anders, @AlexMiller? Das hört sich interessant an.

    – DavidS

    8. Juli 2015 um 0:26 Uhr

  • Eigentlich würde ich sagen, dass sie es sind nicht das Gleiche. Die java.vm.version ist die jvm-Versionsnummer, etwa “25.0-b70”, während die java.version die normale Java-Sprachversion ist, die Sie gewohnt sind, “1.8.0” zu sehen.

    – Alex Müller

    8. Juli 2015 um 2:19 Uhr

  • Beachten Sie, dass Java 9 den zurückgegebenen Wert dieser Zeichenfolge ändert.

    – AlBlue

    20. April 2016 um 19:12 Uhr

1645704425 745 Wie finde ich die JVM Version eines Programms
Sean Patrick Floyd

Verwenden:

System.getProperty("java.version");

Woher java.version kann durch eine der vielen anderen Systemeigenschaften ersetzt werden, die sich auf die aktuelle Java-Version beziehen. Hier ist eine Tabelle davon:

 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

Quellen:

  • Ausgabe von java -XshowSettings:all -version für eine Vielzahl von JVM-Versionen.
  • Java-API-Referenzdokumentation für System.getProperties()

1645704426 661 Wie finde ich die JVM Version eines Programms
Andreas Thompson

Es scheint die java.specification.version ist der beste für den Job.

Z.B

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

  • java.vm.version ist in openjdk-11-headless null

    – Benutzer8461

    9. März 2019 um 20:06 Uhr

  • @ User8461 Vielleicht sollten Sie einen Fehlerbericht mit demjenigen erstellen, der das offene JDK überwacht. Um ehrlich zu sein, habe ich nicht viel Sinn darin gesehen, diesen Wert herauszufinden. Hier ist es aktuell 25.45-b02 .. was mir nichts bedeutet (liefert keine nützlichen Informationen).

    – Andrew Thompson

    9. März 2019 um 20:14 Uhr

Einfach ein Fall von Berufung System.getProperty("java.version").

Der folgende Java-Code kehrt zurück JVM Versionen, die in Ihrer aktuellen IDE verfügbar sind

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) {
                  // ...
              }

Ausgang:

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

1645704426 714 Wie finde ich die JVM Version eines Programms
Gemeinschaft

Je nachdem, was man braucht, können die anderen Antworten helfen.

In meinem Fall taten sie das nicht. Ich habe nach den “vollständig qualifizierten” Versionsinformationen eines IBM JDK gesucht.

Die “echte” Antwort kann also lauten: Einfach wegwerfen alle Systemeigenschaften und prüfen Sie, ob es eine gibt, die Ihnen das bietet, wonach Sie suchen.

In meinem Fall; Ich habe festgestellt, dass das IBM JDK a kennt

Eigentum: java.Vollversion

JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Compressed References 20161013_322271 (JIT aktiviert, AOT aktiviert)

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

Wie finde ich die JVM Version eines Programms
snr

Einfach anrufen,

System.out.println(System.getProperty("java.specification.version"));
System.out.println(System.getProperty("java.runtime.version"));

Beispielausgabe:

9
9+176

842950cookie-checkWie finde ich die JVM-Version eines Programms?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy