Nicht unterstützter Major Minor Versionsfehler in Java

Sheeraz Gul 15 Februar 2024
  1. der Fehler Nicht unterstützte Major.Minor-Version in Java
  2. der Fehler Nicht unterstützte Major.Minor-Version im Eclipse-Projekt
Nicht unterstützter Major Minor Versionsfehler in Java

Der Fehler Unsupported major.minor version oder Java.lang.UnsupportedClassVersionError tritt auf, weil während der Laufzeit ein niedrigeres JDK und während des Kompilierens ein höheres JDK vorhanden ist. Dieses Tutorial zeigt, wie man die Nicht unterstützte Major.Minor-Version in Java löst.

der Fehler Nicht unterstützte Major.Minor-Version in Java

Das JDK sollte während der Kompilierung und Laufzeit gleich sein, oder zumindest sollte das Kompilierungs-JDK nicht höher sein als das Laufzeit-JDK; Andernfalls wird der Fehler Java.lang.UnsupportedClassVersionError oder Unsupported major.minor version ausgegeben.

Versuchen wir ein Beispiel, das diesen Fehler auslöst, weil wir Java 1.8 zum Kompilieren und 1.7 zum Ausführen verwenden. Siehe Beispiel:

public class Unsupported_Version_Error {
  public static void main(String args[]) {
    System.out.println("Hello this is Delftstack.com");
  }
}

Der obige Code löst die Ausnahme einer nicht unterstützten Version aus, wie unten gezeigt.

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)

Die Ausgabe zeigt den Fehler, da der Code mit Java 1.8 kompiliert und mit Java 1.7 ausgeführt wird. da Major version 52 Java SE 8 bezeichnet, wird der Fehler Unsupported major.minor version 52.0 ausgegeben.

Die Lösung besteht darin, die Anwendung zur Kompilierungs- und Laufzeit mit denselben Versionen zu erstellen, oder zumindest ist die Version zur Kompilierzeit niedriger als die Version zur Laufzeit. Die Liste der JRE-Versionen, die mit der Klasse kompatibel sind, finden Sie unten.

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

Befolgen Sie die nachstehenden Tipps, um den Fehler Nicht unterstützte Major.Minor-Version zu beheben.

  1. Wir können die JRE-Version in unserer Produktionsumgebung auf die neueste Version aktualisieren. Oder zumindest ähnlich der Build-Umgebung.

  2. Wenn ein Upgrade von JRE nicht möglich ist, können wir das JDK in der Build-Umgebung herabstufen, damit es mit der Version in der Produktionsumgebung übereinstimmt, oder es niedriger als in der Produktionsumgebung machen.

  3. Eine einfache Lösung ist die Verwendung der Java-Cross-Compilation. Wenn das Produktionsumgebungs-JDK niedriger als die Buildumgebung ist, können wir mithilfe von Cross-Compilation eine Klassendatei mit einer niedrigeren Version generieren.

    Der folgende Befehl wird verwendet, um eine Klassendatei für den obigen Code zu erstellen.

javac -target 1.7 Unsupported_Version_Error.java

Der obige Befehl generiert die Klassendatei Unsupported_Version_Error.java, die mit der Version 1.7 des JDK kompatibel ist, damit wir sie in der Build-Umgebung ausführen können.

der Fehler Nicht unterstützte Major.Minor-Version im Eclipse-Projekt

Wenn Sie eine IDE wie Eclipse verwenden, müssen wir die Java-Version des aktuellen Projekts in der IDE ändern. Befolgen Sie die nachstehenden Schritte, um die Java-Version in Eclipse zu ändern, wodurch der Fehler Nicht unterstützte Hauptversion.Unterversion behoben wird.

  • Klicken Sie in Eclipse mit der rechten Maustaste auf den Projektnamen und gehen Sie zu Eigenschaften.

    Java-Projekteigenschaften

  • Gehen Sie zu Java Build Path und dann zu Libraries.

    Java Build Path

  • Entfernen Sie die bisherige JRE System Library. Wählen Sie die JRE-Systembibliothek und klicken Sie auf Entfernen.
  • Im nächsten Schritt fügen Sie die JRE System Library hinzu. Klicken Sie auf Bibliothek hinzufügen.

    Bibliothek hinzufügen

  • Wählen Sie JRE System Library und klicken Sie auf Next.

    JRE-Systembibliothek

  • Wählen Sie die Option Alternative JRE und wählen Sie die neueste JRE aus. Klicken Sie auf Fertig stellen.

Nach diesem Prozess ist unsere Produktionsumgebung JRE ähnlich oder höher als die Build-Umgebung und der Fehler Nicht unterstützte Haupt-, Nebenversion wird behoben.

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

Verwandter Artikel - Java Error