7

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

kensuke1984
  • 305
  • 1
  • 5

3 Answers3

7

Javaのバージョンを取得するシステムプロパティはいくつか種類があります。

  1. java.version
  2. java.specification.version
  3. java.vm.version
  4. 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.versionjava.runtime.versionを見ればよいと思います。

なお、環境や使用されているvmによっては上記のプロパティが存在せずに取得できない場合があるかもしれませんので、戻り値のnullチェックは忘れずに。

holywise
  • 1,652
  • 1
  • 13
  • 27
1

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

husa
  • 67
  • 1
1

JWS (Java Web Start) を使用して配布するのであれば、JNLP ファイルの j2se 要素に指定するだけでメッセージなりを出すことができるはずです。
昨今は JWS を使用してゐる例はあまり見かけないのですが。

Beu
  • 36
  • 4