私はthisを読みましたが、は十分ではありません!プログラムからJVMのバージョンを見つける方法...詳細は?
私は何を意味することは次のとおりです。私は
のjava -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のわずか古いバージョンを実行します。 java -versionは次のように表示します。
J9VM - R28_Java8_SR1_20150410_1531_B243669
しかし、これらのシステムプロパティを印刷すると、そのような詳細は失われます。私は、少し古いJVMと新しいものを区別できるJavaコードを書く方法を見つけられませんでした。
短いストーリー:「JVM内で」そのような詳細レベルを得るためのプログラム的な方法はありますか?
(基本的に私は動的に私たちのJUnitテストの一部を無効にすることが必要で、彼らは単に古いJVMで動作いけない。しかし、新しいJVMで私の地元のEclipseインストールで実行しているとき、私はそれらを実行することにしたい)
私はMXの豆をチェックしましたが、それ以上の情報を明らかにしていないようです。ですから、 'java.home'プロパティを読み込み、' bin'と 'java'をタックし、' -version'引数でそれを実行し、出力を読み込んで解析する以外の方法はありません。 – Holger