프로그램에서 JVM 버전을 찾는 방법
클래스가 실행되고 있는 JVM 버전을 알고 싶은 샘플 Java 파일을 쓰고 싶습니다.방법이 있을까요?
System.getProperty("java.version")
필요한 것을 반환합니다.
필요에 따라서, JMX 를 사용할 수도 있습니다.
ManagementFactory.getRuntimeMXBean().getVmVersion()
용도:
System.getProperty("java.version");
어디에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 버전에 대응하고 있습니다. - Java API 레퍼런스 매뉴얼
그런 것 같아요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
단순히 전화하는 경우System.getProperty("java.version")
.
그냥 전화만 하면 돼
System.out.println(System.getProperty("java.specification.version"));
System.out.println(System.getProperty("java.runtime.version"));
출력 예:
9
9+176
아래 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.풀버전
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 압축 참조 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
Java 9 이후 새로운 스태틱 방식이 도입되었습니다.런타임버전 ★
반환되는 오브젝트에는 feature() 또는 compareToIgnoreOption()과 같은 흥미로운 메서드가 있습니다(예: 사용하기 쉬운 메서드).Runtime.version().feature() >= 11
).
버전에 대한 정보는 다음 속성으로 저장됩니다.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
언급URL : https://stackoverflow.com/questions/5103121/how-to-find-the-jvm-version-from-a-program
'source' 카테고리의 다른 글
Maria에서 동시에 작업하는 프로세스를 처리하는 방법DB (0) | 2022.10.01 |
---|---|
MySQL 대원 거리(Haversine 공식) (0) | 2022.10.01 |
도커 파일에 mysql을 설치하시겠습니까? (0) | 2022.10.01 |
Android 버튼 객체 내에서 텍스트 주변의 내부 패딩을 줄이려면 어떻게 해야 합니까? (0) | 2022.10.01 |
Mac에 설치한 후 ALTER USER 문을 사용하여 MySQL 루트 암호 재설정 (0) | 2022.10.01 |