Błąd instalacji Mavena w systemie OSX Nieobsługiwana wersja major.minor 51.0


114

Zainstalowałem Mavena, wykonując następujące kroki: (samouczek)

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

potem napisałem echo w .bash_profile sth w ten sposób:

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, gdy chcę sprawdzić wersję ( mvn -v), pojawia się następujący wyjątek: Myślę, że niektóre wersje są nieprawidłowe, 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 stara. Użyj Java-1.7 +
Ajeet Ganga

Odpowiedzi:


275

Problem polega na tym, że nie ustawiłeś poprawnie JAVA_HOME na Macu. Aby to zrobić, należy ustawić to w następujący sposób:

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

W moim przypadku moja instalacja JDK to jdk1.8.0_40, upewnij się, że wpisałeś swoją.

Następnie możesz użyć poleceń maven.

Pozdrowienia!


15
Zauważam również, że obecna wersja Maven3 wymaga Java7, przynajmniej otrzymałem ten komunikat o błędzie, gdy JAVA_HOME został ustawiony poprawnie, ale na Java 1.6 JDK.
Steve Powell

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

W moim przypadku katalog /Library/Java/JavaVirtualMachinesjest pusty ... co mam zrobić? 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
powinieneś dodać to do swojego pliku .profile lub .bash_profile w zależności od posiadanej wersji Mac OS X.
Pacu

również, jeśli zostanie dodany do .profile lub .bash_profile, pamiętaj, aby zamknąć terminal / uruchomić nowy terminal, aby zawartość tego pliku została ponownie uruchomiona.
jotadepicas

16

Proszę raczej spróbować:

$JAVA_HOME/bin/java -version

Maven używa $JAVA_HOMEdo rozpoznawania ścieżek klas bibliotek JRE. Aby upewnić się, że używasz określonego JDK, ustaw go jawnie przed kompilacją, na przykład:

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

Czy nie ma wersji <1.7 i używasz Maven 3.3.1? W tym przypadku powodem jest nowy warunek wstępny: https://issues.apache.org/jira/browse/MNG-5780


Hej, obecnie zmagam się z tym samym problemem .. Co masz na myśli mówiąc „Czy nie ma wersji <1.7”? Używam Java 1.6, czy to jest za stara? I drugie pytanie: nie mam folderu „java” w katalogu „/ usr”, tylko w System / Library? Każda pomoc byłaby bardzo mile
widziana

6
Począwszy od Maven 3.3 istnieje minimalny wymóg JDK 1.7. Jeśli chcesz kompilować z JDK 1.6, musisz utknąć na Maven 3.2.5 lub starszym.
René

1
Mam już zainstalowany JDK 1.7, ale JAVA_HOME odwołuje się do jdk 1.6
Frederik Witte

7

Dynamiczne $HOME/.zshrcrozwiązanie, jeśli jesteś podobny do mnie 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

Problem tutaj NIE jest ustawiony. Java_home. Jest ustawiony, ale wersja jest stara.
Ajeet Ganga

na osx pobierz najpierw najnowsze jdk - oracle.com/technetwork/java/javase/downloads/ ...
lfender6445

3

Rozwiązałem to umieszczając starą wersję mavena (2.x), używając naparu:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2

2

W Eclipse nie musisz zmieniać JAVA_HOME, wystarczy zmienić konfigurację uruchamiania Mavena na coś powyżej 1.6 (nawet jeśli twój projekt jest w Javie 6, Maven nie powinien). Kliknij projekt prawym przyciskiem myszy, wybierz opcję Maven Build lub Uruchom jako> Uruchom konfiguracje i ustaw poprawną wersję JDK.


0

Zrób to w swoim .profile -

eksportuj JAVA_HOME = `/ usr / libexec / java_home`

(odwrotne klawisze gwarantują wykonanie polecenia i umieszczenie jego wartości w JAVA_HOME)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.