Erreur d'installation de Maven OSX non pris en charge version major.minor 51.0

114

J'ai installé maven en suivant ces étapes: (un tutoriel)

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

alors j'ai écrit l'écho dans le .bash_profile sth comme ceci:

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

et aussi j'ai écrit ceci dans le .bashrc

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

maintenant, quand je veux vérifier la version ( mvn -v), j'obtiens l'exception suivante: je pense qu'il y a des versions erronées, mais je ne sais pas.

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)

Information additionnelle:

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
Steven
la source
2
TL; DR: la version Java est ancienne. Utilisez Java-1.7 +
Ajeet Ganga

Réponses:

275

Le problème est que vous n'avez pas défini correctement JAVA_HOME sur Mac. Pour ce faire, vous devez le configurer comme ceci:

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

Dans mon cas, mon installation JDK est jdk1.8.0_40, assurez-vous de saisir la vôtre.

Ensuite, vous pouvez utiliser les commandes maven.

Cordialement!

GerSua
la source
15
Je note également que la version actuelle de Maven3 a besoin de Java7, au moins j'ai reçu ce message d'erreur lorsqu'il a JAVA_HOME été défini correctement, mais à un JDK Java 1.6.
Steve Powell
J'avais besoin export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"de mon .profile.
aliteralmind
Dans mon cas, le répertoire /Library/Java/JavaVirtualMachinesest vide ... que dois-je faire? 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
vous devez l'ajouter à votre fichier .profile ou .bash_profile selon la version de Mac OS X dont vous disposez.
Pacu
aussi, s'il est ajouté à .profile ou .bash_profile, n'oubliez pas de fermer votre terminal / démarrer un nouveau terminal pour que le contenu de ce fichier soit à nouveau exécuté.
jotadepicas
16

Essayez plutôt:

$JAVA_HOME/bin/java -version

Maven utilise $JAVA_HOMEpour la résolution de chemin de classe des bibliothèques JRE. Pour être sûr d'utiliser un certain JDK, définissez-le explicitement avant la compilation, par exemple:

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

N'existe-t-il pas une version <1.7 et vous utilisez Maven 3.3.1? Dans ce cas, la raison est un nouveau prérequis: https://issues.apache.org/jira/browse/MNG-5780

René
la source
Hé, je suis actuellement aux prises avec le même problème. Que voulez-vous dire par "N'y a-t-il pas une version <1.7"? J'utilise Java 1.6, est-ce trop ancien? Et la deuxième question: je n'ai pas de dossier "java" sous "/ usr", uniquement sous System / Library? Toute aide serait grandement appréciée
Frederik Witte
6
À partir de Maven 3.3, il y a une exigence minimale JDK 1.7. Si vous voulez compiler avec JDK 1.6, vous devez rester bloqué sur Maven 3.2.5 ou moins.
René
1
Je l'ai déjà fait fonctionner :) J'avais JDK 1.7 installé, mais JAVA_HOME faisait référence à jdk 1.6
Frederik Witte
7

Une $HOME/.zshrcsolution dynamique , si vous êtes comme moi ie. 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
Evandrix
la source
Le problème ici n'est PAS que java_home est défini. Il est défini, mais la version est ancienne.
Ajeet Ganga
sur osx, obtenez d'abord le dernier jdk - oracle.com/technetwork/java/javase/downloads
...
3

Je l'ai résolu en mettant une ancienne version de maven (2.x), en utilisant brew:

brew uninstall maven
brew tap homebrew/versions 
brew install maven2
javaboygo
la source
2

Dans Eclipse, vous n'avez pas besoin de changer JAVA_HOME, il vous suffit de changer la configuration d'exécution pour Maven à quelque chose au-dessus de 1.6 (même si votre projet est sur Java 6, Maven ne devrait pas l'être). Cliquez avec le bouton droit sur le projet, choisissez Maven Build ou Exécuter en tant que> Exécuter les configurations et définissez la version JDK correcte.

Noumène
la source
0

Faites cela dans votre .profile -

export JAVA_HOME = `/ usr / libexec / java_home`

(les backticks s'assurent d'exécuter la commande et de placer sa valeur dans JAVA_HOME)

Pradeep
la source