0
Help us understand the problem. What are the problem?

posted at

javacでリリースバージョンを指定する

概要

Javaの外部ライブライりのバージョンUPを行った際に、実行環境のJavaよりライブラリのリリースバージョンが上だったので、実行環境のJavaのバージョンUPをすることになったときのメモです。

リリースバージョンの確認

リリースバージョンの確認は、対象のクラスファイルをjavapで逆アセンブリすることで確認出来ます。javapコマンドの詳細な説明はこちらをご覧ください。

まずはクラスファイルへコンパイルするためのJavaファイルを準備します。

HelloWorld.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コマンドでバージョンを確認してみてください。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?