Java 6 Nicht unterstützte major.minor Version 51.0

78

Ich habe kürzlich Java 8 deinstalliert, um Java 6 zu verwenden, da mein Code / meine Kreationen von mehr Personen als nur von Java 8 verwendet werden sollen. Wenn ich dies tue mvn - version, wird Folgendes zurückgegeben:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

Wenn ich es tue java -version:

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

Mit Java scheint alles in Ordnung zu sein, aber dies passiert auch, wenn ich versuche, ausführbare JARs auszuführen. Ich habe es umgangen, indem ich manuell java -jar (jar name) gemacht habe.

Hassan Syyid
quelle
1
Welche Version von Maven verwenden Sie?
John Ament
ist JAVA_HOME / bin / java -version druckt auch java version "1.6.0_45"?
Bakterien
Verwenden Sie einfach Java 8 und kompilieren Sie mit 1.6-Kompatibilität
Java 6 ist sehr alt und wird seit einiger Zeit nicht mehr unterstützt. Ich würde davon abraten, es überhaupt zu benutzen. Wenn Sie die Kompatibilität erhöhen möchten, ist Java 7 der richtige Weg.
Boris die Spinne

Antworten:

104

Laut der Maven-Website ist die letzte Version, die Java 6 unterstützt, 3.2.5, und 3.3 und höher verwenden Java 7. Meine Vermutung ist, dass Sie Maven 3.3 oder höher verwenden und entweder auf Java 7 aktualisieren (und die richtige Quelle festlegen sollten) / Zielattribute in Ihrem Pom) oder Downgrade-Maven.

John Ament
quelle
1
Es war genau mein Problem. Ich habe kürzlich die Mars 2-Version von Eclipse für 64 Bit installiert und bei der Neuinstallation wurde die eingebettete Maven-Version anstelle meiner verwendet. Ich habe zwei Möglichkeiten ausprobiert: Die erste bestand darin, die JRE-Version des Projekts auf 1.8 zu ändern, und die zweite darin, die 1.6-JRE zuzulassen und die Maven-Version von der eingebetteten Version in meine lokale Installation zu ändern, und beide Optionen funktionierten
Facepalmed
Wir verwenden JDE 1.8 und sehen genau dieses Problem.
DrLou
13

Diese Versionsnummer (51.0) gibt an, dass Sie versuchen, für Java 7 kompilierte Klassen auszuführen. Sie müssen sie für Java 6 neu kompilieren.

Beachten Sie jedoch, dass einige Funktionen möglicherweise nicht mehr mit Java 6 kompatibel sind, das sehr alt ist und von Oracle nicht mehr (öffentlich) unterstützt wird.

Andy Turner
quelle
6
Du bist lustig ... die meisten hier benutzen immer noch Java 6, Infact, sie sind gerade erst von Java 4 dort angekommen ... sind von 4 auf 6 gefahren! (und dein Kommentar ist vom letzten Jahr! :)
VeenarM
5

Ich stand auch vor einem ähnlichen Problem. Ich könnte dies lösen, indem ich JAVA_HOME in der Umgebungsvariablen in Windows setze. Das Festlegen von JAVA_HOME in einer Batchdatei funktioniert in diesem Fall nicht.

Rajesh Kumar Yadav
quelle
2

Das Problem ist, dass Sie die JDK-Version nicht richtig eingestellt haben. Sie sollten JDK 7 für die Hauptnummer 51 verwenden. So:

JAVA_HOME = / usr / java / jdk1.7.0_79

Mohammad Zebardast
quelle
2

Ich bin auf das gleiche Problem gestoßen. Ich verwende jdk 1.8 und maven 3.3.9. Nachdem ich JAVA_HOME exportiert habe, wurde dieser Fehler nicht angezeigt. export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_121.jdk / Contents / Home /

Dakshin Rajavel
quelle
Ich habe die gleiche JRE und mvn, aber das hat nicht funktioniert, habe den gleichen Fehler bekommen
user2568374
0

Ich stehe vor dem gleichen Problem und habe es gelöst, indem ich die Variable JAVA_HOME mit der aktualisierten Version von Java in meiner Ubuntu-Maschine (16.04) hinzugefügt habe. Wenn Sie "Apache Maven 3.3.9" verwenden, müssen Sie Ihr JAVA_HOME mit Java7 oder höher aktualisieren

Schritt dazu

1-sudo vim / etc / environment

2-JAVA_HOME = JAVA-Installationsverzeichnis (MyCase- / opt / dev / jdk1.7.0_45 /)

3-Run echo $ JAVA_HOME gibt den eingestellten Wert für JAVA_HOME an

4-Now mvn -version liefert die gewünschte Ausgabe

Apache Maven 3.3.9

Maven home: /usr/share/maven

Java version: 1.7.0_45, vendor: Oracle Corporation

Java home: /opt/dev/jdk1.7.0_45/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "4.4.0-36-generic", arch: "amd64", family: "unix"
Pintu
quelle
0

Fügen Sie jdk8 oder eine höhere Version unter JAVA_HOME und Pfad hinzu.

JAVA_HOME hinzufügen C: \ ProgramFiles \ Java \ jdk1.8.0_201 hinzufügen

Für Pfad =>

Fügen Sie% MAVEN_HOME% \ bin hinzu

und starten Sie schließlich Ihren PC neu.

harun ugur
quelle