HOWTO · Java
Java でサポートされていないメジャー マイナー バージョン エラー
このチュートリアルでは、Java でサポートされていないメジャー マイナー バージョン エラーを解決する方法を示します。
このページの内容
Unsupported major.minor version エラーまたは Java.lang.UnsupportedClassVersionError は、実行時の JDK が低く、コンパイル時の JDK が高いために発生します。 このチュートリアルでは、Java で Unsupported major.minor version を解決する方法を示します。
Unsupported major.minor version Java のエラー
JDK はコンパイル時と実行時に同じである必要があります。または、少なくともコンパイル時の JDK が実行時の JDK よりも高くなってはなりません。 そうしないと、Java.lang.UnsupportedClassVersionError または Unsupported major.minor version エラーがスローされます。
Java 1.8 を使用してコンパイルし、1.7 を使用して実行するため、このエラーをスローする例を試してみましょう。 例を参照してください:
public class Unsupported_Version_Error {
public static void main(String args[]) {
System.out.println("Hello this is Delftstack.com");
}
}
上記のコードは、以下に示すように、サポートされていないバージョンの例外をスローします。
Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported_Version_Error : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
コードが Java 1.8 でコンパイルされ、Java 1.7 で実行されるため、出力にエラーが表示されます。 メジャー バージョン 52 は Java SE 8 を示しているため、Unsupported major.minor version 52.0 エラーがスローされます。
解決策は、コンパイル時と実行時に同じバージョンでアプリケーションをビルドするか、少なくともコンパイル時のバージョンが実行時のバージョンよりも低いバージョンにすることです。 クラスと互換性のある JRE のバージョンのリストを以下に示します。
Java SE 17 = 61,
Java SE 16 = 60,
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
Unsupported major.minor version エラーを解決するには、以下のヒントに従ってください。
-
本番環境の JRE バージョンを最新バージョンにアップグレードできます。 または、少なくともビルド環境に似ています。
-
JRE のアップグレードが不可能な場合は、ビルド環境の JDK をダウングレードして本番環境のバージョンと一致させるか、本番環境より低くすることができます。
-
簡単な解決策の 1つは、Java クロスコンパイルを使用することです。 本番環境の JDK がビルド環境よりも低い場合、クロスコンパイルを使用して、より低いバージョンのクラス ファイルを生成できます。
次のコマンドは、上記のコードのクラス ファイルを作成するために使用されます。
javac -target 1.7 Unsupported_Version_Error.java
上記のコマンドは、クラス ファイル Unsupported_Version_Error.java を生成します。これは、ビルド環境で実行できるように、JDK の 1.7 バージョンと互換性があります。
Eclipse プロジェクトでの Unsupported major.minor version エラー
Eclipse などの IDE を使用している場合は、IDE で現在のプロジェクトの Java バージョンを変更する必要があります。 次の手順に従って、Eclipse で Java バージョンを変更します。これにより、サポートされていないメジャー.マイナー バージョンエラーが解決されます。
-
Eclipse でプロジェクト名を右クリックし、[プロパティ] に移動します。
-
Java Build Pathに移動し、次にLibrariesに移動します。
-
以前の
JRE System Libraryを削除します。JRE System Libraryを選択し、Removeをクリックします。 -
次のステップは、
JRE System Libraryを追加することです。ライブラリを追加をクリックします。
-
JRE System Libraryを選択し、Nextをクリックします。
-
Alternate JREオプションを選択し、最新の JRE を選択します。完了をクリックします。
このプロセスの後、本番環境の JRE はビルド環境と同等またはそれ以上になり、サポートされていないメジャー.マイナー バージョンエラーは解決されます。