2015-03-25 15 views
112

zainstalowałem Maven wykonując ten etapy: (samouczek)Maven Instalacja wersji OSX Błąd nieobsługiwany MAJOR.MINOR 51,0

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 

czym pisałem echo w sth .bash_profile jak ten:

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… 

a także napisałem to w .bashrc

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

teraz kiedy chcę sprawdzić wersję (mvn -v) Otrzymuję następujący wyjątek: Myślę, że niektóre wersje są błędne, ale nie wiem.

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) 

Dodatkowe informacje:

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: wersja Java jest stary. Używaj Java-1.7 + –

Odpowiedz

274

Problem polega na tym, że nie ustawiono prawidłowo JAVA_HOME w komputerze Mac. W tym celu należy wykonać ustawić go tak:

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

w moim przypadku moja instalacja JDK jest jdk1.8.0_40, upewnij się, że wpiszesz swoją.

Następnie możesz użyć komend maven.

Pozdrawiam!

+15

Zauważyłem też, że obecna wersja Maven3 potrzebuje Java7, przynajmniej dostałem ten komunikat o błędzie, gdy 'JAVA_HOME' * został * ustawiony poprawnie, ale do JDK Java 1.6. –

+0

Potrzebowałem 'export JAVA_HOME ="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"' do mojego .profile. – aliteralmind

+0

W moim przypadku katalog '/ Library/Java/JavaVirtualMachines' jest pusty ... co powinienem zrobić? ps'java -version wersja Java "1.6.0_65" Środowisko uruchomieniowe Java (TM) SE (wersja 1.6.0_65-b14-466.1-11M4716) Moduł wirtualnej maszyny wirtualnej Java HotSpot (TM) 64-bitowy (wersja 20.65-b04- 466,1, tryb mieszany) ' – AnnabellChan

16

Proszę raczej spróbuj

$JAVA_HOME/bin/java -version 

Maven używa $ JAVA_HOME do tworzenia bibliotek JRE klasy clas. celu należy użyć pewnej JDK ustawić go jawnie przed kompilacją, na przykład:

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

Czy nie istnieje wersja < 1,7 i używasz Maven 3.3.1? W tym przypadku powodem jest nowy warunek wstępny: https://jira.codehaus.org/browse/MNG-5780.

+0

Hej, ja obecnie zmagam się z tym samym problemem. Co masz na myśli przez "Czy nie ma wersji <1.7"? Używam Java 1.6, czy to jest za stare? I drugie pytanie: nie mam folderu "java" w "/ usr", tylko w System/Library? Każda pomoc będzie bardzo ceniona –

+6

Począwszy od Maven 3.3 jest minimalne wymaganie JDK 1.7. Jeśli chcesz skompilować z JDK 1.6, musisz utknąć na Maven 3.2.5 lub mniej. –

+1

Mam to już działa :) Miałem zainstalowany JDK 1.7, ale JAVA_HOME odwoływało się do jdk 1.6 –

7

Dynamiczne rozwiązanie $HOME/.zshrc, jeśli jesteś taki jak ja, tj. 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 
+0

Problem tutaj NIE jest ustawiony java_home. Jest ustawiony, ale wersja jest stara. –

+0

na osxie pobierz najpierw jdk - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html – lfender6445

3

Rozwiązałem go stawiając starą wersję Maven (2.x), stosując napar:

brew uninstall maven 
brew tap homebrew/versions 
brew install maven2 
2

W Eclipse, nie trzeba zmienić JAVA_HOME, ty wystarczy zmienić konfigurację uruchamiania Mavena na coś powyżej 1.6 (nawet jeśli twój projekt jest na Javie 6, Maven nie powinien być). Kliknij projekt prawym przyciskiem myszy, wybierz polecenie Maven Build lub Run As> Run Configurations i ustaw poprawną wersję JDK.

0

Zrób to w swoim.profil -

export JAVA_HOME = `/ usr/libexec/java_home`

(backticks upewnij się, aby wykonać polecenie i umieścić swoją wartość w JAVA_HOME)