Error de OSX de instalación de Maven No admitido major.minor versión 51.0

114

Instalé maven siguiendo estos pasos: (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

luego escribí el eco en el .bash_profile algo así:

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

y también escribí esto en el .bashrc

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

ahora, cuando quiero verificar la versión ( mvn -v), obtengo la siguiente excepción: creo que hay algunas versiones incorrectas, pero no lo sé.

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)

Información Adicional:

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
fuente
2
TL; DR: la versión de Java es antigua. Utilice Java-1.7 +
Ajeet Ganga

Respuestas:

275

El problema es porque no ha configurado JAVA_HOME en Mac correctamente. Para hacer eso, debe configurarlo así:

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

En mi caso, mi instalación de JDK es jdk1.8.0_40, asegúrese de escribir la suya.

Entonces puedes usar los comandos de maven.

¡Saludos!

GerSua
fuente
15
También noto que la versión actual de Maven3 necesita Java7, al menos recibí este mensaje de error cuando JAVA_HOME se configuró correctamente, pero en un JDK de Java 1.6.
Steve Powell
Necesitaba export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/"mi .profile.
aliteralmind
En mi caso, el directorio /Library/Java/JavaVirtualMachinesestá vacío ... ¿qué debo hacer? 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
debe agregar esto a su archivo .profile o .bash_profile dependiendo de la versión de Mac OS X que tenga.
Pacu
Además, si se agrega a .profile o .bash_profile, recuerde cerrar su terminal / iniciar una nueva terminal para que el contenido de este archivo se ejecute nuevamente.
jotadepicas
16

Por favor, intente:

$JAVA_HOME/bin/java -version

Maven utiliza $JAVA_HOMEpara la resolución de rutas de clases de las librerías JRE. Para asegurarse de utilizar un determinado JDK, configúrelo explícitamente antes de compilar, por ejemplo:

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

¿No hay una versión <1.7 y estás usando Maven 3.3.1? En este caso, el motivo es un nuevo requisito previo: https://issues.apache.org/jira/browse/MNG-5780

René
fuente
Oye, actualmente estoy luchando con el mismo problema. ¿Qué quieres decir con "¿No hay una versión <1.7"? Estoy usando Java 1.6, ¿es demasiado antiguo? Y la segunda pregunta: ¿No tengo una carpeta "java" en "/ usr", solo en Sistema / Biblioteca? Cualquier ayuda sería muy apreciada
Frederik Witte
6
A partir de Maven 3.3 hay un requisito mínimo de JDK 1.7. Si desea compilar con JDK 1.6, debe quedarse atascado en Maven 3.2.5 o menos.
René
1
Ya lo hice funcionar :) Tenía JDK 1.7 instalado, pero JAVA_HOME hacía referencia a jdk 1.6
Frederik Witte
7

Una $HOME/.zshrcsolución dinámica , si eres como yo, es decir. Linux @ trabajo; MBP / A @ casa

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
fuente
El problema aquí NO es que java_home esté configurado. Está configurado, pero la versión es antigua.
Ajeet Ganga
en osx obtenga el último jdk primero - oracle.com/technetwork/java/javase/downloads/…
lfender6445
3

Lo resolví poniendo una versión antigua de maven (2.x), usando brew:

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

En Eclipse, no necesita cambiar JAVA_HOME, solo necesita cambiar la configuración de ejecución de Maven a algo por encima de 1.6 (incluso si su proyecto está en Java 6, Maven no debería estarlo). Haga clic con el botón derecho en el proyecto, elija Maven Build o Run As> Run Configurations y establezca la versión correcta de JDK.

Noumenon
fuente
0

Haga esto en su .profile -

exportar JAVA_HOME = `/ usr / libexec / java_home`

(las comillas invertidas asegúrese de ejecutar el comando y colocar su valor en JAVA_HOME)

Pradeep
fuente