Java でサポートされていないメジャー マイナー バージョン エラー

Sheeraz Gul 2024年2月15日
  1. Unsupported major.minor version Java のエラー
  2. Eclipse プロジェクトでの Unsupported major.minor version エラー
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 エラーを解決するには、以下のヒントに従ってください。

  1. 本番環境の JRE バージョンを最新バージョンにアップグレードできます。 または、少なくともビルド環境に似ています。

  2. JRE のアップグレードが不可能な場合は、ビルド環境の JDK をダウングレードして本番環境のバージョンと一致させるか、本番環境より低くすることができます。

  3. 簡単な解決策の 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 プロジェクトのプロパティ

  • Java Build Path に移動し、次に Libraries に移動します。

    Java ビルド パス

  • 以前の JRE System Library を削除します。 JRE System Library を選択し、Remove をクリックします。
  • 次のステップは、JRE System Library を追加することです。 ライブラリを追加をクリックします。

    ライブラリを追加

  • JRE System Library を選択し、Next をクリックします。

    JRE システム ライブラリ

  • Alternate JRE オプションを選択し、最新の JRE を選択します。 完了をクリックします。

このプロセスの後、本番環境の JRE はビルド環境と同等またはそれ以上になり、サポートされていないメジャー.マイナー バージョンエラーは解決されます。

著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Error