Installazione di Maven Errore OSX Versione major.minor non supportata 51.0


114

Ho installato Maven seguendo questi passaggi: (un 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

poi ho scritto l'eco in .bash_profile sth in questo modo:

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

e anche questo l'ho scritto nel .bashrc

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

ora quando voglio controllare la versione ( mvn -v) ottengo la seguente eccezione: Penso che ci siano alcune versioni sbagliate, ma non lo so.

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)

Informazioni aggiuntive:

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: la versione Java è vecchia. Usa Java-1.7 +
Ajeet Ganga

Risposte:


275

Il problema è perché non hai impostato correttamente JAVA_HOME su Mac. Per farlo, dovresti impostarlo in questo modo:

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

Nel mio caso la mia installazione JDK è jdk1.8.0_40, assicurati di digitare il tuo.

Quindi puoi usare i comandi Maven.

Saluti!


15
Noto anche che l'attuale versione di Maven3 necessita di Java7, almeno ho ricevuto questo messaggio di errore quando JAVA_HOME era impostato correttamente, ma su Java 1.6 JDK.
Steve Powell

Avevo bisogno del export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"mio .profile.
aliteralmind

Nel mio caso la directory /Library/Java/JavaVirtualMachinesè vuota ... cosa devo fare? 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
dovresti aggiungerlo al tuo file .profile o .bash_profile a seconda della versione di Mac OS X che hai.
Pacu

inoltre, se aggiunto a .profile o .bash_profile, ricorda di chiudere il tuo terminale / avviare un nuovo terminale in modo che il contenuto di questo file venga eseguito di nuovo.
jotadepicas

16

Per favore, prova piuttosto:

$JAVA_HOME/bin/java -version

Maven utilizza $JAVA_HOMEper la risoluzione del percorso di classe delle librerie JRE. Per essere sicuri di utilizzare un determinato JDK, impostalo esplicitamente prima della compilazione, ad esempio:

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

Non esiste una versione <1.7 e stai usando Maven 3.3.1? In questo caso il motivo è un nuovo prerequisito: https://issues.apache.org/jira/browse/MNG-5780


Ehi, attualmente sto lottando con lo stesso problema .. Cosa intendi con "Non esiste una versione <1.7"? Sto usando Java 1.6, è troppo vecchio? E la seconda domanda: non ho una cartella "java" in "/ usr", solo in System / Library? Qualsiasi aiuto sarebbe molto apprezzato
Frederik Witte

6
A partire da Maven 3.3 esiste un requisito minimo JDK 1.7. Se vuoi compilare con JDK 1.6 devi rimanere bloccato su Maven 3.2.5 o meno.
René

1
L'ho già fatto funzionare :) Avevo JDK 1.7 installato, ma JAVA_HOME si riferiva a jdk 1.6
Frederik Witte

7

Una $HOME/.zshrcsoluzione dinamica , se sei come me, ad es. 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

Il problema qui NON è che java_home sia impostato. È impostato, ma la versione è vecchia.
Ajeet Ganga

su osx ottieni prima l'ultimo jdk - oracle.com/technetwork/java/javase/downloads/…
lfender6445

3

L'ho risolto mettendo una vecchia versione di maven (2.x), usando brew:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

In Eclipse, non è necessario modificare JAVA_HOME, è sufficiente modificare la configurazione di esecuzione per Maven in qualcosa di superiore a 1.6 (anche se il progetto è su Java 6, Maven non dovrebbe esserlo). Fare clic con il pulsante destro del mouse sul progetto, scegliere Maven Build o Run As> Run Configurations e impostare la versione JDK corretta.


0

Fallo nel tuo .profile -

export JAVA_HOME = `/ usr / libexec / java_home`

(backtick assicurati di eseguire il comando e posizionare il suo valore in JAVA_HOME)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.