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 エラーを解決するには、以下のヒントに従ってください。

  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 はビルド環境と同等またはそれ以上になり、サポートされていないメジャー.マイナー バージョンエラーは解決されます。