クラスが実行されているJVMのバージョンを知りたいサンプルJavaファイルを書きたいのですが。方法はありますか?
java.specification.version
、信頼できるアプレットでのみ使用できますが、、java.version
&java.vm.version
はすべてサンドボックスアプレットで使用できます1.6.0_23
。少なくとも、の時点で使用できました。詳細については、私の回答を参照してください。
java -version
:)
クラスが実行されているJVMのバージョンを知りたいサンプルJavaファイルを書きたいのですが。方法はありますか?
java.specification.version
、信頼できるアプレットでのみ使用できますが、、java.version
&java.vm.version
はすべてサンドボックスアプレットで使用できます1.6.0_23
。少なくとも、の時点で使用できました。詳細については、私の回答を参照してください。
java -version
:)
回答:
System.getProperty("java.version")
必要なものを返します。
必要に応じてJMXを使用することもできます。
ManagementFactory.getRuntimeMXBean().getVmVersion()
それjava.specification.version
は仕事に最適なもののようです。
例えば
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
あるOpenJDKの-11-ヘッドレスでヌル
25.45-b02
何も意味しません(有用な情報を提供しません)。
使用する:
System.getProperty("java.version");
where java.version
は、現在のJavaバージョンに関連する他の多くのシステムプロパティのいずれかに置き換えることができます。ここにそれらの表があります:
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
出典:
java -XshowSettings:all -version
さまざまなJVMバージョンの出力。System.getProperties()
使用例java.version
、java.specification.version
およびjava.runtime.version
:ランタイムでのJavaのバージョンを取得します。
以下のJavaコードはJVM
、現在のIDEで使用可能なバージョンを返します
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) {
// ...
}
出力:
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
必要に応じて、他の回答が役立ちます。
私の場合、彼らはしませんでした。IBM JDKの「完全修飾」バージョン情報を探していました。
したがって、「実際の」答えは次のとおりです。すべてのシステムプロパティをダンプし、探しているものを提供するものがあるかどうかを確認します。
私の場合; IBM JDKは、
プロパティ:java.fullversion
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Compressed References 20161013_322271(JIT対応、AOT対応)
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
バージョンに関する情報は、System
クラスのプロパティとして保存されます。
http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
System.getProperty( "sun.arch.data.model");
Java 32ビットおよび64ビットコントロール
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);
出力:
6
32
AccessController.doPrivileged(new PrivilegedAction<String>(...));