einige Notizen. Die Systemeigenschaften sind dafür gedacht, aber denken Sie daran, dass es sich um eine privilegierte Operation handelt und dass Applets / Webstart / Sandbox-Code sie nicht ausführen kann (SecurityException erhalten). Normalerweise AccessController.doPrivileged(new PrivilegedAction<String>(...));
möchten
3
@bestsss Während einige Eigenschaften nur für vertrauenswürdige Applets verfügbar sind : java.specification.version, java.version& java.vm.versionsind alle für ein Applet mit Sandbox verfügbar , oder zumindest ab 1.6.0_23. Siehe meine Antwort für weitere Details.
Andrew Thompson
Auch eine Sache, die funktionieren kann: java -version:)
Dieser JMX-Aufruf gibt das Äquivalent von "java.vm.version" zurück, nicht "java.version". Diese sind normalerweise (aber nicht unbedingt) gleich.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () ist möglicherweise genauer.
Tante
Wann sind sie anders, @AlexMiller? Das hört sich interessant an.
DavidS
1
Eigentlich würde ich sagen, dass sie nicht gleich sind. 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 Miller
3
Beachten Sie, dass Java 9 den zurückgegebenen Wert dieser Zeichenfolge ändert.
AlBlue
54
Es scheint, dass das java.specification.versiondas beste für den Job ist.
@ 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 für mich nichts bedeutet (liefert keine nützlichen Informationen).
Andrew Thompson
53
Verwenden:
System.getProperty("java.version");
Wo java.versionkann durch eine der vielen anderen Systemeigenschaften ersetzt werden, die sich auf die aktuelle Java-Version beziehen. Hier ist eine Tabelle von ihnen:
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 -versionfür eine Vielzahl von JVM-Versionen.
Je nachdem, was man braucht, können die anderen Antworten helfen.
In meinem Fall haben sie nicht. Ich suchte nach den "vollqualifizierten" Versionsinformationen eines IBM JDK.
Die "echte" Antwort kann also lauten: Speichern Sie einfach alle Systemeigenschaften und prüfen Sie, ob es eine gibt, die Ihnen das bietet, wonach Sie suchen.
In meinem Fall; Ich fand, dass das IBM JDK a kennt
Eigenschaft: java.fullversion
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Komprimierte Referenzen 20161013_322271 (JIT aktiviert, AOT aktiviert)
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
sind alle für ein Applet mit Sandbox verfügbar , oder zumindest ab1.6.0_23
. Siehe meine Antwort für weitere Details.java -version
:)Antworten:
System.getProperty("java.version")
gibt zurück, was Sie brauchen.Sie können JMX auch verwenden, wenn Sie möchten:
ManagementFactory.getRuntimeMXBean().getVmVersion()
quelle
Es scheint, dass das
java.specification.version
das beste für den Job ist.Z.B
quelle
java.vm.version
ist null in openjdk-11-headless25.45-b02
.. was für mich nichts bedeutet (liefert keine nützlichen Informationen).Verwenden:
Wo
java.version
kann durch eine der vielen anderen Systemeigenschaften ersetzt werden, die sich auf die aktuelle Java-Version beziehen. Hier ist eine Tabelle von ihnen:Quellen:
java -XshowSettings:all -version
für eine Vielzahl von JVM-Versionen.System.getProperties()
quelle
Einfach ein Fall von Anruf
System.getProperty("java.version")
.quelle
Beispiele für die Verwendung
java.version
,java.specification.version
undjava.runtime.version
: Java - Version in Runtime bekommen .quelle
Der folgende Java-Code gibt
JVM
Versionen zurück, die in Ihrer aktuellen IDE verfügbar sindAusgabe:
quelle
Je nachdem, was man braucht, können die anderen Antworten helfen.
In meinem Fall haben sie nicht. Ich suchte nach den "vollqualifizierten" Versionsinformationen eines IBM JDK.
Die "echte" Antwort kann also lauten: Speichern Sie einfach alle Systemeigenschaften und prüfen Sie, ob es eine gibt, die Ihnen das bietet, wonach Sie suchen.
In meinem Fall; Ich fand, dass das IBM JDK a kennt
Eigenschaft: java.fullversion
quelle
Einfach anrufen,
Beispielausgabe:
quelle
Informationen zu Versionen werden als Eigenschaften der
System
Klasse gespeichert .http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
quelle
System.getProperty ("sun.arch.data.model");
Java 32 Bit und 64 Bit Control
Ausgabe :
quelle