Jar化したJavaプログラムを開発環境と異なる環境で実行しようとしたときにエラーメッセージException in thread "main" java.lang.UnsupportedClassVersionError
が発生する場合があります。このエラーメッセージの原因と対処法を解説します.
目次
Exception in thread “main” java.lang.UnsupportedClassVersionError
> java -jar MyApplication.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: MyApplication has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
原因
Exceptionメッセージを要約すると、以下の通りです。
java.lang.UnsupportedClassVersionError:
java.lang.UnsupportedClassVersionError のエラーメッセージ
実行環境のJREがサポートしているのはクラスファイルバージョン 52.0までです。
MyApplicationはより新しいバージョンのJRE (クラスファイルバージョン62.0) コンパイルされています。
開発環境と実行環境のJREの差によってエラーが発生しています。このケースでいえば、実行環境のJREのバージョンが、開発環境に比べて古いためです。
対処法
対処法としては以下の2つが考えられます。
- 対処法1 実行環境のバージョンをプログラムのコンパイルのJavaバージョン以上に新しくする。
- 対処法2 プログラムをコンパイルするJavaのバージョンを実行環境よりも古くする。
なお、Javaのバージョンは以下のコマンドで確認できます。
> java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
JREとVMがサポートするJavaクラスファイルの形式の対応表
JRE (Java VM)のバージョン | VMがサポートするJavaクラスファイルの形式 |
---|---|
1.4 | 48 |
1.5 | 49 |
1.6 | 50 |
1.7 | 51 |
1.8 | 52 |
9 | 53 |
10 | 54 |
11 | 55 |
12 | 56 |
13 | 57 |
14 | 58 |
15 | 59 |
16 | 60 |
17 | 61 |
18 | 62 |
19 | 63 |