
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld ha
s been compiled by a more recent version of the Java Runtime (class file version
56.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)
JRE と JDK の両方を何度か再インストールしましたが、効果はありませんでした。
答え1
基本的に、使用している JRE は、クラスをコンパイルするために使用した JDK よりも古いものです。エラー メッセージ内の重要な情報は次のとおりです。
... HelloWorld は、より新しいバージョンの Java ランタイム (クラス ファイル バージョン 56.0) でコンパイルされています。このバージョンの Java ランタイムは、クラス ファイル バージョン 52.0 までしか認識しません。
クラス ファイルのバージョンに基づくと、使用している JRE はおそらく 5 年前にリリースされたものです。次のいずれかを行う必要があります。
- JRE を最新バージョンに更新する (より良いオプション)
または
- 現在の JRE と互換性のあるクラスをコンパイルできるように、一致する古い JDK をインストールします。
注意: より新しいバージョンの JRE をインストールしてjava -version
ターミナルから実行する場合、指定されたバージョンはインストールしたものと一致していますか? 一致していない場合は、環境変数を確認してくださいPATH
。JAVA_HOME
おそらく間違った場所を指しています。