Java 8 を用いた実行可能jarを配布したいのですが、ユーザーのJavaが7以前であるときに、Java 8のダウンロードを促すメッセージを出したいのですが、このjarファイルを介してそのようなことは可能でしょうか?
別にソフトウエアを用意する必要があるのでしょうか?
Asked
Active
Viewed 504 times
7

kensuke1984
- 305
- 1
- 5
3 Answers
7
Javaのバージョンを取得するシステムプロパティはいくつか種類があります。
java.version
java.specification.version
java.vm.version
java.runtime.version
取得する方法は単純で、例えば以下のようなコードを実行するだけです。
String version = System.getProperty("java.specification.version");
手元の環境(Windows10/Java8)で試したところ、それぞれ以下のような値が取得できました。
java.version : 1.8.0_51
java.specification.version : 1.8
java.vm.version : 25.51-b03
java.runtime.version : 1.8.0_51-b16
Java8かどうかだけを判定したいのであれば、java.specification.version
の値をチェックするのが手っ取り早いでしょう。脆弱性の判定などのために細かいバージョンもチェックが必要ということであればjava.version
か java.runtime.version
を見ればよいと思います。
なお、環境や使用されているvmによっては上記のプロパティが存在せずに取得できない場合があるかもしれませんので、戻り値のnullチェックは忘れずに。

holywise
- 1,652
- 1
- 13
- 27
1
起動時にJava7以前には無くてJava8以降にあるクラスなりメソッドなりをチェックしてみるとか?
それでなければダウンロードを促すメッセージを出力してプログラム終了。あれば通常動作とかいかが?

husa
- 67
- 1
-
4システムプロパティー"java.version"でもバージョン確認はできますね。そちらもどうぞ。 – husa Aug 03 '15 at 04:50
-
試してみます ありがとうございます! – kensuke1984 Aug 03 '15 at 06:14
1
JWS (Java Web Start) を使用して配布するのであれば、JNLP ファイルの j2se 要素に指定するだけでメッセージなりを出すことができるはずです。
昨今は JWS を使用してゐる例はあまり見かけないのですが。

Beu
- 36
- 4