Frage Wie zu beheben java.lang.UnsupportedClassVersionError: Nicht unterstützte Major.Minor-Version


Ich versuche zu benutzen Notizblock ++ als mein All-in-One-Tool bearbeiten, ausführen, kompilieren usw.

ich habe JRE installiert, und ich habe meine Pfadvariable auf das Verzeichnis ... / bin eingestellt.

Wenn ich meine "Hallo Welt" in Notepad ++ ausführen, erhalte ich folgende Nachricht:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

Ich denke, hier geht es um Versionen; Einige Versionen von Java können alt oder zu neu sein.

  1. Wie repariere ich es?
  2. Sollte ich das JDK installieren und meine Pfadvariable auf das JDK anstatt auf JRE einstellen?
  3. Was ist der Unterschied zwischen den? PATH Variable in JRE oder JDK?

1384
2018-04-30 11:28


Ursprung


Antworten:


Die angezeigte Versionsnummer beschreibt die Version der JRE, mit der die Klassendatei kompatibel ist.

Die gemeldeten Hauptnummern sind:

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

(Quelle: Wikipedia)

Um das eigentliche Problem zu beheben, sollten Sie entweder den Java-Code mit einer neueren Version von Java JRE ausführen oder den Zielparameter für den Java-Compiler angeben, um den Compiler anzuweisen, Code zu erstellen, der mit früheren Java-Versionen kompatibel ist.

Verwenden Sie beispielsweise die folgende Befehlszeile, um mit Java 1.4 kompatible Klassendateien zu generieren:

javac -target 1.4 HelloWorld.java

Bei neueren Versionen des Java-Compilers werden Sie wahrscheinlich eine Warnung erhalten, dass der Bootstrap-Klassenpfad nicht gesetzt ist. Weitere Informationen zu diesem Fehler finden Sie im Blogbeitrag Neue Javac-Warnung für das Setzen einer älteren Quelle ohne bootclasspath.


1773
2017-07-11 11:59



java.lang.UnsupportedClassVersionError geschieht aufgrund eines höheren JDK während der Kompilierungszeit und eines niedrigeren JDK während der Laufzeit.


328
2018-06-28 06:48



In Eclipse ging ich einfach zum Menübefehl Fenster -> Einstellungen -> Java -> Compiler und legen Sie "Compiler compliance level" auf 1.6 fest.


111
2018-05-02 18:58



Mach dir keine Sorgen, ich habe es gelöst.

Es ist eigentlich einfach - Sie müssen BEIDE JRE / JDK mit der gleichen Version installieren.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Und so weiter.


55
2018-05-04 06:23



Dieser Fehler bedeutet, dass Sie versuchen, eine Java-Klassendatei zu laden, die mit einer neueren Java-Version kompiliert wurde, als Sie installiert haben.

Zum Beispiel, dein .class Datei könnte für JDK 7 kompiliert worden sein, und Sie versuchen, es mit JDK 6 auszuführen.

Also die Lösung ist entweder:

  • Aktualisieren Sie Ihre Java-Laufzeitumgebung oder
  • Kompilieren Sie die Klasse erneut, wenn Sie die Quelle haben, und verwenden Sie Ihren lokalen Java-Compiler (falls Sie einen haben).

    javac Dateiname.java

Für Entwickler kann dies passieren, wenn ein anderer Entwickler eine .class-Datei eincheckt und sie eine neuere Version von Java haben als Sie!


37
2018-02-20 19:02



Sie versuchen, Ihr Programm mit einer Java-Version auszuführen, die die Version nicht unterstützt, in der der Code kompiliert wurde. Sie müssen also Ihren Code mit einer höheren Version kompiliert haben und versuchen, ihn mit einer niedrigeren Version auszuführen.

Wie du kommst

Unsupported major.minor version 51.0

und Version 51.0 entspricht J2SE 7 Wahrscheinlich haben Sie Ihren Code in Java 7 kompiliert und versucht, ihn mit einer niedrigeren Version auszuführen. Überprüfen was java -versionzeigt an. Es sollte die Java 7 Version sein. Wenn nicht, nehmen Sie entsprechende Änderungen in PATH / JAVA_HOME vor. Oder Sie können mit derselben Version kompilieren, mit der Sie versuchen, den Code auszuführen. Wenn die Konfigurationen verwirrend sind, können Sie immer den absoluten Pfad angeben /home/user/jdk1.7.0_11/bin/javac und /home/user/jdk1.7.0_11/bin/java.


20
2017-10-01 08:51



Ich hatte eine ähnliche Situation auf Mac, und der folgende Prozess funktionierte für mich:

Geben Sie im Terminal ein

vi ~/.profile

Fügen Sie dann diese Zeile in die Datei ein und speichern Sie sie

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

wo Version ist die auf Ihrem Computer, wie 1.7.0_25.

Beenden Sie den Editor und geben Sie den folgenden Befehl ein, damit er wirksam wird

source ~/.profile 

Dann geben Sie java -version ein, um das Ergebnis zu prüfen

java -version 

Was ist .profile Datei?

.profile-Datei ist eine versteckte Datei. Es ist eine optionale Datei, die dem System mitteilt, welche Befehle ausgeführt werden sollen, wenn der Benutzer sich in seiner Profildatei anmeldet. Zum Beispiel, wenn mein Benutzername bruno ist und es eine .profile-Datei in / Users / bruno / gibt wird während des Anmeldevorgangs ausgeführt.

Quelle: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515


17
2018-02-11 06:55



Im Menü von Eclipse Fenster -> Einstellungen -> Java -> Compiler Überprüfen Sie auch "Projektspezifische Einstellungen konfigurieren".

Wenn Sie den Fehler immer noch mit derselben Java-Version haben: Versuchen Sie, den Build-Ordner Ihres Projekts manuell zu löschen. Dann starte Eclipse neu.


15
2017-08-06 10:24



Sie können eine JAR-Bibliothek in Java 7 kompilieren, und Sie haben nur Java 6 als Java Runtime. Es könnte mit einigen neuen Bibliotheken passieren.


13
2018-06-25 12:51



Das häufigste Problem ist eine Fehlkonfiguration Ihres JAVA_HOME Variable, die auf die richtige Java Development Kit-Bibliothek verweisen sollte, wenn Sie mehrere installiert haben.

Führen Sie die folgenden Befehle aus, um den SDK-Java-Ordner zu finden:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu

Um zu überprüfen, welches Java (openjdk) du installiert hast, überprüfe über:

dpkg -l "openjdk*" | grep ^i

oder:

update-java-alternatives -l

Um es zu ändern, verwenden Sie:

update-alternatives --config java

Präfix mit sudo Falls erforderlich.

um die alternative Java-Version auszuwählen.

Oder überprüfen Sie, welche zur Installation verfügbar sind:

apt-cache search ^openjdk

Präfix mit sudo Falls erforderlich.

Dann können Sie zum Beispiel installieren:

apt-get install openjdk-7-jre

Präfix mit sudo Falls erforderlich.

Fedora, Oracle Linux, Red Hat

Installieren / aktualisieren Sie das entsprechende Paket über:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

Das java-1.7.0-openjdk Paket enthält nur die Java Runtime Environment. Wenn Sie Java-Programme entwickeln möchten, installieren Sie das java-1.7.0-openjdk-devel Paket.

BSD

Es gibt ein OpenJDK 7-Paket in der FreeBSD-Ports-Sammlung namens openjdk7 das muss wahrscheinlich neu konfiguriert werden.

Sehen: OpenJDK Wiki-Seite.

Windows

Installieren Sie einfach die entsprechende Java SE Development Kit-Bibliothek von der Oracle-Website oder installieren

Jenkins

Wenn dieses Problem bei Jenkins auftritt, lesen Sie:

Wählen Sie jedoch die richtige Version von Java (neuer) mit update-alternatives sollte arbeiten.


13
2018-04-04 12:16