概要
Javaの外部ライブライりのバージョンUPを行った際に、実行環境のJavaよりライブラリのリリースバージョンが上だったので、実行環境のJavaのバージョンUPをすることになったときのメモです。
リリースバージョンの確認
リリースバージョンの確認は、対象のクラスファイルをjavapで逆アセンブリすることで確認出来ます。javapコマンドの詳細な説明はこちらをご覧ください。
まずはクラスファイルへコンパイルするためのJavaファイルを準備します。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World.");
}
}
javacコマンドでコンパイルします。javacコマンドの詳細な説明はこちらをご覧ください。
$ java -version
openjdk version "11.0.11" 2021-04-20
$ javac HelloWorld.java
$ ls
HelloWorld.class HelloWorld.java
javapで実行可能なリリースバージョンを確認します。
$ javap -verbose HelloWorld.class
・・・省略・・・
public class HelloWorld
minor version: 0
major version: 60
・・・省略・・・
60と表示されました。これはJDK16になります。
対応はこちらで確認しました。
実行環境がJDK11なので55になるかと思いましたが意外でした。
リリースバージョンの指定
releaseオプションでリリースバージョンに8(JDK8)を指定します。
$ javac --release 8 HelloWorld.java
javapで実行可能なリリースバージョンを確認します。
・・・省略・・・
public class HelloWorld
minor version: 0
major version: 52
・・・省略・・・
52と表示されました。これはJDK8になります。
まとめ
簡単ではありますが、javacとjavapコマンドを利用したリリースバージョンの確認を行いました。外部ライブラリのバージョンUPなどで、実行環境とリリースバージョンが不一致のときはjavapコマンドでバージョンを確認してみてください。