java - mvn - maven windows
Compilando el código de Java 7 vía Maven (18)
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, cuando mvn clean install
, 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 (lo which java
señala 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
returns -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 ejecutando 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 podría definirse? Tengo la fuente (d) my .zshrc varias veces.
¿Podría probar un plugin más nuevo? en el sitio de maven:
<version>3.0</version>
Vi lo siguiente también:
<compilerVersion>1.7</compilerVersion>
Compruebe el script mvn
en su instalación de maven para ver cómo se está construyendo el comando. Quizás usted u otra persona haya codificado un JAVA_HOME
ahí y lo haya olvidado.
Debes verificar la versión de Maven:
mvn -version
Encontrarás la versión de Java que Maven usa para la compilación. Es posible que deba restablecer JAVA_HOME si es necesario.
Diagnóstico:
Puedes ver qué versión de Java utiliza Maven ejecutando "mvn --version"
Solución para Debian:
El script mvn establece la variable de entorno JAVA_HOME internamente al buscar javac (que javac). Por lo tanto, si tiene múltiples versiones de Java instaladas simultáneamente, 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 aún usará JDK 6. Usted tiene que cambiar la alternativa para "javac" también. 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 (ej.)
# update-java-alternatives -s java-1.7.0-openjdk-amd64
como se detalla en https://wiki.debian.org/JavaPackage , porque esto cambiará todas las alternativas a varias herramientas de Java (hay una docena más o menos).
Haga clic derecho en su proyecto en eclipse y abra "Ejecutar Configuraciones". Verifique la versión de JRE allí. algunas veces esto no cambiará de manera predeterminada en eclipse, incluso después de cambiar la versión en buildpath.
Intente cambiar la configuración del compilador de Java en Propiedades en Eclipse-
Ir a: Preferencias-> Java-> Compilador-> Nivel de cumplimiento del compilador-> 1.7 Aplicar Ok
Reinicie IDE.
Confirme la configuración del compilador para el proyecto: Ir a: Propiedades del proyecto-> Compilador de Java-> Deseleccionar (Usar conformidad desde el entorno de ejecución ''JavaSE-1.6'' en la ruta Java Build.) Y seleccionar 1.7 del menú desplegable. (Ignore si ya es 1.7)
Reinicie IDE.
Si el problema persiste: ejecute casos de prueba individuales usando el comando en terminal-
mvn -Dtest=<test class name> test
Ninguna de las respuestas anteriores resolvió completamente mi caso de uso.
Necesario para eliminar el directorio que se estaba construyendo. Limpiar. Y luego reinstalar. Parece un problema de permisos silenciosos.
No estoy seguro de qué sistema operativo está en uso aquí, pero puede eliminar una gran cantidad de versiones de Java futzing un debian / ubuntu con update-java-alternatives para establecer el sistema jvm predeterminado.
#> update-java-alternatives -l
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-6-sun 63 /usr/lib/jvm/java-6-sun
java-7-oracle 1073 /usr/lib/jvm/java-7-oracle
Para establecer uno nuevo, use:
#> update-java-alternatives -s java-7-oracle
No es necesario configurar JAVA_HOME para la mayoría de las aplicaciones.
Ok, solo resolví este problema yo solo también. Es más importante que JAVA_HOME, si no tiene una versión inferior o ninguna en comparación con las propiedades de origen / destino del complemento Maven, obtendrá este error.
Asegúrese de tener una buena versión en su JAVA_HOME y tenerlo incluido en su RUTA.
Para una compilación específica que requiera una JVM (no predeterminada /etc/alternatives/java
), considere mvn
como prefijo el comando mvn
con JAVA_HOME
,
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ mvn package
Aquí suponemos que el valor predeterminado es Java 8, mientras que para el proyecto específico a mano necesitamos Java 7.
Por favor, compruebe que pom.xml para las etiquetas a continuación
<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
Puede estar especificando una versión incorrecta de java. java -version (en su terminal) para verificar la versión de java que está utilizando. Vaya a maven-compile-plugin para obtener la última versión del compilador de maven. Su complemento puede aparecer así si está usando java 6 y la última versión del plugin de maven compiler es 3.1
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
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
Tuve este problema al trabajar con eclipse, tuve que cambiar la ruta de compilación del proyecto para que se refiera a jre 7
Tuve este problema en IntelliJ IDEA 14 hasta que entré en el menú Archivo -> Estructura del proyecto, cambiando el SDK del proyecto a 1.7 y el nivel de idioma del proyecto a 7.
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 1.6 JDK. Incluso si instala el último JDK, esto no se resuelve. Si bien podría establecer JAVA_HOME en su script $ HOME / .bash_profile, elegí reparar el enlace simbólico en su lugar 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 adaptarla 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
intente usar una versión más nueva del plugin de 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, especificar la codificación del archivo fuente en maven se realiza mejor a nivel mundial:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
EDITAR : Como esta respuesta sigue llamando la atención, me gustaría señalar que los últimos valores (a partir de la última edición) son 3.2 para el plugin maven compiler y 1.8 para java, ya que las preguntas sobre la compilación del código java 8 vía maven están obligadas a aparecer pronto :-)
{JAVA_1_4_HOME} / bin / javacyou puede intentar también ...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<executable>{JAVA_HOME_1_7}/bin/javac</executable>
<fork>true</fork>
</configuration>
</plugin>