나는 this을 읽었지만, 은 충분하지 않다.!프로그램에서 JVM 버전을 찾는 방법 ... 자세한 내용은?
내 말은 것입니다 : 내가 실행할 때
자바 -version
내가 얻을 :
java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480sr3fp20-20161019_02(SR3 FP20))
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20161013_322271 (JIT enabled, AOT enabled)
J9VM - R28_Java8_SR3_20161013_1635_B322271
JIT - tr.r14.java.green_20161011_125790
GC - R28_Java8_SR3_20161013_1635_B322271_CMPRSS
...
를하지만 중 하나를 사용할 때 JVM 버전을 "내부에서"액세스하는 프로그래밍 방식 (연결하는 질문에 설명 된대로)
MX bean --- vmversion: 2.8
내 문제를 사용
Property: java.vm.specification.version : 1.8
Property: java.vm.specification.vendor : Oracle Corporation
Property: java.vm.specification.name : Java Virtual Machine Specification
Property: java.vm.version : 2.8
Property: java.vm.vendor : IBM Corporation
Property: java.vm.name : IBM J9 VM
Property: java.specification.version : 1.8
Property: java.specification.vendor : Oracle Corporation
Property: java.specification.name : Java Platform API Specification
: 우리의 빌드 서버는 IBM의 자바의 약간 이전 버전을 실행)에, 나는 단지와 같은 값을 참조하십시오. java -version은 다음과 같이 표시합니다.
J9VM - R28_Java8_SR1_20150410_1531_B243669
그러나 이러한 시스템 속성을 인쇄하면 이러한 세부 정보가 손실됩니다. 새로운 Java 코드와 약간 구형 인 JVM을 구별 할 수있는 Java 코드를 작성하는 방법을 찾지 못했습니다.
짧은 이야기 : 내 수준의 세부 정보를 줄 수있는 "내 JVM 내에서"뭔가를 수행하는 프로그램 방식이 있습니까?
는 (그들은 단순히 나이가 JVM 작업을 해달라고, 기본적으로 동적으로 우리의 JUnit 테스트의 일부를 사용하지 않도록 설정하는 것이 필요 새로운 JVM 내 지역 이클립스 설치에서 실행하는 경우 그러나 나는 그들을 실행하려는)
MX 빈을 검사했는데 더 자세한 정보가없는 것으로 보입니다. 그래서'java.home' 속성을 읽는 것 외에는'bin'과'java'를 붙잡고'-version' 인수로 실행하고 출력을 읽고 파싱하지 않습니다. – Holger