0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JARファイル実行時の "Exception in thread "main" java.lang.UnsupportedClassVersionError:" を解消する

Posted at

環境

  • Windows11 X64
  • Java8

発生した問題

ビルドしたJARファイルを実行すると以下のエラーが発生しました。
(なお、ソースコードはkoltinで作成されています。)

$ java -jar build/libs/demo1-0.0.1-SNAPSHOT.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.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)

エラーメッセージを読む限り、JARファイルをビルドした環境のJavaがJARファイルを実行する環境よりも古いバージョンであることが原因であると思われます。

そこで、ビルド環境と実行環境それぞれのJavaのバージョンを確認します。
なお、ビルド環境はプロジェクトのJVM, 実行環境はローカルPCにインストールしたJavaを利用しています。

ビルド環境
build.gradle.kts
java {
    sourceCompatibility = JavaVersion.VERSION_17
}

// 一部省略
tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xjsr305=strict"
        jvmTarget = "17"
    }
}
実行環境
$ java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

ビルド環境のjavaバージョンが17であるのに対して、実行環境のjavaバージョンが8でした。

バージョン差分をなくせば正常動作すると思われます。
今回は実行環境のJavaバージョンをビルド環境に揃えるために17にアップデートします。

解消手順

1. WindowsにJava17のインストーラをインストールする

OracleのWebページから Windows x64 Installer をダウンロードします。

image.png

2. インストーラを実行する

jdk-17.0.8_windows-x64_binをクリックします

image.png

ポップアップの選択肢は全て「はい」や「次へ」をクリックします。

デフォルトではC:\Program Files\Java にJDKがインストールされます。

image.png

3. 環境変数JAVA_HOMEの設定

【環境変数を編集】でシステム環境変数 `` JAVA_HOME ``` に先ほどインストールしたJDK-17のパスを指定します。

環境変数を指定した後は一度PCを再起動します。

結果確認

ターミナルでJavaのバージョンを確認します。

$ java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)

無事更新されていました。

それではJARファイルを実行してみます。

image.png

正常に実行されていました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?