james raitsev
Mis listas de archivos pom
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
...
Sin embargo, sobre mvn clean install
Yo obtengo
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
javac: invalid target release: 1.7
Usage: javac <options> <source files>
/usr/bin/java -version
es (which java
puntos aquí)
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
javac
también apunta a la versión correcta de Java
/usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/bin/javac
En esta máquina, estoy usando zsh
(echo $0
devoluciones -zsh
)
En mi .zshrc
he definido:
33 # HOME
34 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home
35 SCALA_HOME=/Library/Scala/current
36 FORGE_HOME=~/tools/forge/
37
38 # PATH
39 PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
40 PATH=${PATH}:${JAVA_HOME}/bin
41 PATH=${PATH}:/bin/
42 PATH=${PATH}:/sbin/
43 PATH=${PATH}:/usr/bin/
44 PATH=${PATH}:/usr/sbin/
45 PATH=${PATH}:/opt/local/bin/
46 PATH=${PATH}:/opt/local/sbin/
47 PATH=${PATH}:/usr/local/git/bin
48 PATH=${PATH}:/usr/local/git/sbin
49 PATH=${PATH}:/Applications/Xcode.app/Contents/Developer/usr/bin
50 PATH=${PATH}:${SCALA_HOME}/bin
51 PATH=${PATH}:${FORGE_HOME}/bin
52
53 export PATH
cuando estoy corriendo mvn clean install --debug
Veo que de hecho uso Java 6
1 Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
2 Maven home: /usr/share/maven
3 Java version: 1.6.0_35, vendor: Apple Inc.
4 Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
¿Dónde se podría definir? Tengo source(d) mi .zshrc varias veces.
Comprobar el mvn
script en su instalación de maven para ver cómo está construyendo el comando. Tal vez usted u otra persona ha codificado de forma rígida un JAVA_HOME
allí y lo olvidé.
-
Usted señor es el ganador. ¡De hecho, alguien codificó JAVA_HOME dentro del script! GRACIAS
–James Raitsev
26 de diciembre de 2012 a las 17:02
-
Je, no es que me haya hecho eso antes ni nada… 🙂
–Ryan Stewart
26 de diciembre de 2012 a las 17:56
-
los
mvn
El script no era compatible con mi instalación OSX de JDK 7 de Oracle, y no hice nada sofisticado al configurarlo (el script busca una carpetaLibrary/Java/JavaVirtualMachines/CurrentJDK
que no existió para mí (lo que existió esjdk1.7.0_25.jdk
en vez deCurrentJDK
). No es una solución elegante, pero codifiqué la exportación y ahora funciona (PD: maven en OSX está en/usr/share/maven/bin/mvn
)– Raekye
4 de agosto de 2013 a las 6:55
-
Mavericks de OSX 1.9.2, con maven instalado a través de homebrew, el script mvn estaba ubicado en
/usr/local/bin/mvn
– StackExchange Qué diablos
19 de marzo de 2014 a las 11:45
-
Tenía un conjunto JAVA_HOME y esto dio la pista. ¡¡GRACIAS!! 😀
–Alfonso Nishikawa
8 de abril de 2014 a las 7:05
radai
intente usar una versión más nueva del complemento del compilador maven:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
Además, es mejor especificar la codificación del archivo fuente en maven a nivel mundial:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
EDITAR: Como esta respuesta aún está recibiendo atención, me gustaría señalar que los valores más recientes (a partir de la última edición) son 3.2 para el complemento del compilador maven y 1.8 para java, ya que es probable que aparezcan preguntas sobre la compilación del código java 8 a través de maven pronto 🙂
-
Agregar “
3.0 ” solucionó el problema.– Sri
27 de diciembre de 2013 a las 15:18
-
@radai, es 3.2 ahora, pero es una tontería seguir actualizando ya que nunca dejará de aumentar…
– Lucas
16 de noviembre de 2014 a las 19:06
-
@Lucas: simplemente no quiero ser responsable de que las personas se adhieran a versiones desactualizadas, eso es todo. no podría vivir conmigo mismo 🙂
– radai
20 de noviembre de 2014 a las 8:58
-
¿Por qué esta respuesta tiene casi cien votos a favor cuando no es la solución correcta a la pregunta planteada? Estoy perdido…
– cero3
9 de enero de 2016 a las 4:40
eliocapelati
Tuve el mismo problema y para resolverlo sigo este artículo del blog: http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/
$ vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
$ source .bash_profile
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
Gracias especiales a @mkyong
-
Esto funcionó para mí. Estoy usando una mac, con maven de macports y sun jdk. Aparentemente ese combo fue complicado.
– Quantum7
5 mayo 2014 a las 14:03
-
Buen trabajo. ¡Gracias por todos los comandos! Funciona ahora en Maveriks
– Maksim
30 de agosto de 2014 a las 3:05
-
Esta es la solución más fácil y elegante. ¡Gracias!
– BK-
24 de febrero de 2015 a las 1:08
usuario4010880
Por favor revise su pom.xml para las siguientes etiquetas
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
debe señalar la versión jdk requerida
Loi Cao
Tienes que comprobar la versión de Maven:
mvn -version
Encontrará la versión de Java que utiliza Maven para la compilación. Es posible que deba restablecer JAVA_HOME si es necesario.
Chris McCarthy
Yo tuve el mismo problema. Descubrí que esto se debe a que el script Maven mira el enlace CurrentJDK a continuación y encuentra un JDK 1.6. Incluso si instala el último JDK, esto no se resuelve. Si bien podría configurar JAVA_HOME en su secuencia de comandos $HOME/.bash_profile, elegí corregir el enlace simbólico de la siguiente manera:
ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6.0 -> CurrentJDK
drwxr-xr-x 9 root wheel 306 11 Nov 21:20 A
lrwxr-xr-x 1 root wheel 1 30 Oct 16:18 Current -> A
lrwxr-xr-x 1 root wheel 59 30 Oct 16:18 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
Observe que CurrentJDK apunta a 1.6.0.jdk
Para solucionarlo, ejecuté los siguientes comandos (debe verificar su versión instalada y adaptarse en consecuencia).
sudo rm /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
Diagnósticos:
Puede ver qué versión de Java usa Maven ejecutando “mvn –version”
Solución para Debian:
El script mvn establece la variable de entorno JAVA_HOME internamente buscando javac (cuál javac). Por lo tanto, si tiene varias versiones de Java instaladas al mismo tiempo, por ejemplo, JDK 6 y JDK 7, y usa el sistema Debian Alternatives para elegir entre ellas, aunque haya cambiado la alternativa de “java” a JDK 7, mvn seguirá usando JDK 6. también tengo que cambiar la alternativa por “javac”. P.ej:
# update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
EDITAR:
En realidad, una solución aún mejor es usar update-java-alternatives (p. ej.)
# update-java-alternatives -s java-1.7.0-openjdk-amd64
como se detalla en https://wiki.debian.org/JavaPackageporque esto va a cambiar todos las alternativas a varias herramientas de Java (hay una docena más o menos).
-
Gracias, justo lo que estaba buscando
– evandongen
19 de junio de 2014 a las 12:05
-
Gracias, estaba confundido después de configurar la versión de Java con: update-alternatives –config javac
– Leonard Saers
10 de julio de 2014 a las 9:00
Tu PATH no tiene
/usr/bin
primero en su lista de directorios. Probarjavac -version
sin especificar un directorio.– Peter Lawrey
26 de diciembre de 2012 a las 16:09
@PeterLawrey, entiendo
javac 1.7.0_10
–James Raitsev
26 de diciembre de 2012 a las 16:11
Que hace
echo $JAVA_HOME
¿decirte?– Andrew Logvinov
26 de diciembre de 2012 a las 16:12
¿Qué pasa con su variable JAVA_HOME? mvn usará JAVA_HOME. Además, ¿está construyendo desde la línea de comandos o dentro de IDE?
– Lucas
26 de diciembre de 2012 a las 16:12
Si ejecuta Maven con
--debug
debería decirle la línea de comando exacta que está usando para ejecutarjavac
(junto con toneladas de otras cosas). ¿Qué dice?– Emil Siéntate
26 de diciembre de 2012 a las 16:12