kilka uwag. Właściwości systemu są do tego przeznaczone, ale NALEŻY pamiętać, że jest to operacja uprzywilejowana i aplety / webstart / sand box nie będą w stanie jej wykonać (otrzymując SecurityException). Zwykle chciałbyś uruchomić to w podobny sposóbAccessController.doPrivileged(new PrivilegedAction<String>(...));
bestsss
3
@bestsss Podczas gdy niektóre właściwości są dostępne tylko dla apletów, które są zaufane: java.specification.version, java.versioni java.vm.versionsą dostępne do apletu piasku-box, albo przynajmniej były jak z 1.6.0_23. Zobacz moją odpowiedź, aby uzyskać więcej informacji.
To wywołanie JMX zwraca odpowiednik „java.vm.version”, a nie „java.version”. Są to zazwyczaj (ale niekoniecznie) to samo.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () może być dokładniejsze.
ciocia
Kiedy się różnią, @AlexMiller? Które brzmi interesująco.
DavidS,
1
Właściwie powiedziałbym, że to nie to samo. Wersja java.vm.version to numer wersji jvm, na przykład „25.0-b70”, podczas gdy java.version to normalna wersja języka java, z której zwykle korzystasz „1.8.0”.
Alex Miller,
3
Warto zauważyć, że Java 9 zmieni wartość zwracaną z tego ciągu.
AlBlue
54
Wygląda na java.specification.versionto, że jest najlepszy do tego zadania.
java.vm.versionma wartość null w openjdk-11-headless
User8461
@ User8461 Może powinieneś zgłosić błąd każdemu, kto nadzoruje otwarty JDK. Szczerze mówiąc, nie widziałem sensu, aby dowiedzieć się o tej wartości. Tutaj jest obecnie 25.45-b02.. co dla mnie nic nie znaczy (nie dostarcza żadnych przydatnych informacji).
Andrew Thompson,
53
Posługiwać się:
System.getProperty("java.version");
Gdzie java.versionmożna zastąpić jedną z wielu innych właściwości systemowych związanych z bieżącą wersją Java. Oto ich tabela:
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
Źródła:
Dane wyjściowe java -XshowSettings:all -versiondla różnych wersji maszyny JVM.
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
ijava.vm.version
są dostępne do apletu piasku-box, albo przynajmniej były jak z1.6.0_23
. Zobacz moją odpowiedź, aby uzyskać więcej informacji.java -version
:)Odpowiedzi:
System.getProperty("java.version")
zwraca to, czego potrzebujesz.Możesz także użyć JMX, jeśli chcesz:
ManagementFactory.getRuntimeMXBean().getVmVersion()
źródło
Wygląda na
java.specification.version
to, że jest najlepszy do tego zadania.NA PRZYKŁAD
źródło
java.vm.version
ma wartość null w openjdk-11-headless25.45-b02
.. co dla mnie nic nie znaczy (nie dostarcza żadnych przydatnych informacji).Posługiwać się:
Gdzie
java.version
można zastąpić jedną z wielu innych właściwości systemowych związanych z bieżącą wersją Java. Oto ich tabela:Źródła:
java -XshowSettings:all -version
dla różnych wersji maszyny JVM.System.getProperties()
źródło
Po prostu sprawa dzwonienia
System.getProperty("java.version")
.źródło
Przykłady korzystania
java.version
,java.specification.version
orazjava.runtime.version
: Pierwsze wersji Java w środowisku wykonawczym .źródło
Poniższy kod java zwraca
JVM
wersje, które są dostępne w Twoim obecnym IDEwynik:
źródło
W zależności od potrzeb, inne odpowiedzi mogą pomóc.
W moim przypadku nie. Szukałem informacji o „w pełni kwalifikowanej” wersji pakietu IBM JDK.
Tak więc „prawdziwa” odpowiedź może brzmieć: po prostu zrzuć wszystkie właściwości systemu i sprawdź, czy jest taki, który daje ci to, czego szukasz.
W moim przypadku; Odkryłem, że IBM JDK zna plik
Właściwość: java.fullversion
źródło
Po prostu zadzwoń,
Przykładowe dane wyjściowe:
źródło
Informacje o wersjach są przechowywane jako właściwości
System
klasy.http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
źródło
System.getProperty ("sun.arch.data.model");
Java 32-bitowa i 64-bitowa kontrola
Wynik :
źródło