Maven Installation OSX-Fehler Nicht unterstützt major.minor Version 51.0


114

Ich habe maven folgendermaßen installiert: (ein Tutorial)

JAVA_HOME=/Library/Java/Home
export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

echo $JAVA_HOME
echo $M2_HOME
echo $M2
echo $PATH

nano .bash_profile

dann habe ich das echo so in das .bash_profile geschrieben:

JAVA_HOME=/usr/libexec/java_home
M2_HOME=/path/to/your/apache-maven-3.x.x
M2=/path/to/your/apache-maven-3.x.x/bin
PATH=/path/to/maven/bin:/$….bla-bla-bla

und auch ich habe das in die .bashrc geschrieben

export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

Wenn ich jetzt die Version ( mvn -v) überprüfen möchte, erhalte ich die folgende Ausnahme: Ich denke, dass einige Versionen falsch sind, aber ich weiß es nicht.

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:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    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)

Zusätzliche Information:

java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
javac -version
javac 1.8.0_40

2
TL; DR: Java-Version ist alt. Verwenden Sie Java-1.7 +
Ajeet Ganga

Antworten:


275

Das Problem ist, dass Sie JAVA_HOME auf dem Mac nicht richtig eingestellt haben. Um dies zu tun, sollten Sie es wie folgt einstellen:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

In meinem Fall ist meine JDK-Installation jdk1.8.0_40. Geben Sie Ihre ein.

Dann können Sie Maven-Befehle verwenden.

Grüße!


15
Ich stelle auch fest, dass die aktuelle Version von Maven3 Java7 muss, zumindest habe ich diese Fehlermeldung , wenn JAVA_HOME wurde richtig eingestellt, aber auf einen Java 1.6 JDK.
Steve Powell

Ich musste export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"mein .profile.
Aliteralmind

In meinem Fall ist das Verzeichnis /Library/Java/JavaVirtualMachinesleer ... was soll ich tun? psjava -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
LittleLittleQ

1
Sie sollten dies je nach Mac OS X-Version zu Ihrer .profile- oder .bash_profile-Datei hinzufügen.
Pacu

Wenn Sie zu .profile oder .bash_profile hinzugefügt werden, denken Sie daran, Ihr Terminal zu schließen / ein neues Terminal zu starten, damit der Inhalt dieser Datei erneut ausgeführt wird.
Jotadepicas

16

Bitte versuchen Sie lieber:

$JAVA_HOME/bin/java -version

Maven verwendet $JAVA_HOMEfür die Klassenpfadauflösung von JRE-Bibliotheken. Um sicherzugehen, dass Sie ein bestimmtes JDK verwenden, legen Sie es vor dem Kompilieren explizit fest, zum Beispiel:

export JAVA_HOME=/usr/java/jdk1.7.0_51

Gibt es keine Version <1.7 und Sie verwenden Maven 3.3.1? In diesem Fall ist der Grund eine neue Voraussetzung: https://issues.apache.org/jira/browse/MNG-5780


Hey, ich habe derzeit mit dem gleichen Problem zu kämpfen. Was meinst du mit "Gibt es nicht eine Version <1.7"? Ich benutze Java 1.6, ist das zu alt? Und die zweite Frage: Ich habe keinen "Java" -Ordner unter "/ usr", nur unter System / Library? Jede Hilfe wäre sehr dankbar
Frederik Witte

6
Ab Maven 3.3 gibt es eine Mindestanforderung JDK 1.7. Wenn Sie mit JDK 1.6 kompilieren möchten, müssen Sie sich an Maven 3.2.5 oder weniger halten.
René

1
Ich habe es bereits zum Laufen gebracht :) Ich hatte JDK 1.7 installiert, aber JAVA_HOME bezog sich auf JDK 1.6
Frederik Witte

7

Eine dynamische $HOME/.zshrcLösung, wenn Sie wie ich sind, dh. Linux @ work; MBP / A @ home

if [[ $(uname) == "Darwin" ]]; then export OSX=1; fi
if [[ $(uname) ==  "Linux" ]]; then export LINUX=1; fi

if [[ -n $OSX ]]; then
        export JAVA_HOME=$(/usr/libexec/java_home)
else
        export JAVA_HOME=/usr/lib/jvm/default-java
fi

Das Problem hier ist NICHT, dass java_home gesetzt ist. Es ist eingestellt, aber die Version ist alt.
Ajeet Ganga

auf osx erhalten Sie die neuesten JDK zuerst - oracle.com/technetwork/java/javase/downloads/…
lfender6445

3

Ich habe es gelöst, indem ich eine alte Version von Maven (2.x) mit Brew verwendet habe:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

In Eclipse müssen Sie JAVA_HOME nicht ändern, sondern nur die Ausführungskonfiguration für Maven auf etwas über 1.6 ändern (selbst wenn Ihr Projekt auf Java 6 ausgeführt wird, sollte Maven dies nicht sein). Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie Maven Build oder Run As> Run Configurations und stellen Sie die richtige JDK-Version ein.


0

Tun Sie dies in Ihrem .profile -

export JAVA_HOME = `/ usr / libexec / java_home`

(Backticks stellen sicher, dass der Befehl ausgeführt und sein Wert in JAVA_HOME platziert wird.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.