Compilación de código Java 7 a través de Maven


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, consigo{[16]]}

[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 devuelve -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 fuente (d) mi .zshrc varias veces.

 154
Author: rogerdpack, 2012-12-26

18 answers

Compruebe el script mvn en su instalación maven para ver cómo está construyendo el comando. Tal vez usted o alguien más ha codificado un JAVA_HOME y olvidado.

 153
Author: Ryan Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-26 16:50:18

Intente usar una versión más reciente 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 es mejor hacerlo globalmente:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

EDIT : Como esta respuesta todavía está recibiendo atención, me gustaría señalar que los últimos valores (a partir de la última edición) son 3.2 para maven compiler plugin y 1.8 para java, ya que las preguntas sobre la compilación de código java 8 a través de maven están destinadas a aparecer pronto : -)

 109
Author: radai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-23 10:41:57

Tuve el mismo problema y para resolver esto 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

Tks especiales a @mkyong

EDIT: Ahora estoy usando: jEnv + sdkman

 48
Author: eliocapelati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-08 21:09:53

Por favor, compruebe que 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 apuntar a la versión jdk requerida

 25
Author: user4010880,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-03 13:14:19

Yo tenía 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. Mientras que solo podría establecer JAVA_HOME en su HOME HOME/.bash_profile script Elegí arreglar 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 arreglarlo, ejecuté los siguientes comandos (debe verificar su versión instalada y adaptarse consecuentemente).

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
 19
Author: Chris McCarthy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-03 20:44:12

Tienes que comprobar la versión Maven:

mvn -version

Encontrará la versión de Java que Maven usa para la compilación. Es posible que tenga que restablecer JAVA_HOME si es necesario.

 18
Author: Loi Cao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-10 15:33:59

Diagnóstico:

Puede ver qué versión de Java utiliza Maven ejecutando "mvn version version"

Solución para Debian:

El script mvn establece la variable env JAVA_HOME internamente buscando javac (que javac). Por lo tanto, si tiene varias versiones de Java instaladas simultáneamente, por ejemplo, JDK 6 y JDK 7 y usa el sistema de Alternativas de Debian para elegir entre ellas, aunque haya cambiado la alternativa para "java" a JDK 7, mvn seguirá usando JDK 6. Tienes que cambiar la alternativa para "javac", también. Por ejemplo:

# update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac

EDITAR:

En realidad, una solución aún mejor es utilizar update-java-alternatives (por ejemplo)

# 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 Java (hay una docena más o menos).

 4
Author: user323094,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-25 13:31:48

Podría probar un plugin más nuevo; en el sitio maven:

<version>3.0</version>

También vi lo siguiente:

<compilerVersion>1.7</compilerVersion>
 2
Author: Joop Eggen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-26 16:14:06

Intente cambiar la configuración del compilador Java en Propiedades en Eclipse -

Goto: Preferencias - > Java- > Compilador - > Nivel de Cumplimiento del compilador - > 1.7 Aplicar Ok

Reinicie el IDE.

Confirmar la configuración del compilador para el proyecto- Goto: Project Properties- > Java Compiler-> Uncheck(Use Compliance from execution environment 'JavaSE-1.6' on the java Build path.) y seleccione 1.7 en el menú desplegable. (Ignorar si ya es 1.7)

Reinicie el IDE.

Si todavía el problema persiste-Ejecutar individual casos de prueba usando el comando en terminal -

mvn -Dtest=<test class name> test
 2
Author: Mithun Khatri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-20 19:00:46

No estoy seguro de lo que el sistema operativo está en uso aquí, pero se puede eliminar una gran cantidad de versión de java futzing un debian/ubuntu con update-java-alternatives para establecer la jvm por defecto en todo el sistema.

#> 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 establecer JAVA_HOME para la mayoría de las aplicaciones.

 2
Author: Bruce Edge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-31 23:51:53

Haga clic derecho en su proyecto en eclipse y abra "Ejecutar configuraciones"..compruebe la versión de jre allí. algunas veces esto no cambiará por defecto en eclipse,incluso después de cambiar la versión en el buildpath.

 2
Author: ravinder reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-13 12:57:38

{JAVA_1_4_HOME}/bin/javacpuede probar 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>
 1
Author: baybora.oren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-08 12:06:52

Para una compilación específica que requiere una JVM (no predeterminada /etc/alternatives/java), considere prefijar el comando mvn con JAVA_HOME de esta manera,

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ mvn package

Aquí asumimos que el valor predeterminado es Java 8, mientras que para el proyecto específico en cuestión requerimos Java 7.

 1
Author: elm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-10 09:42:44

Ok, acabo de resolver este problema por mi cuenta también. Es más importante su JAVA_HOME, si no tiene una versión más baja 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.

 0
Author: Silviu Burcea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-30 19:07:56

Es posible que esté especificando una versión incorrecta de Java. java-versión (en su terminal) para comprobar la versión de Java que está utilizando. Vaya a maven-compile-plugin para la última versión del compilador maven Su plugin puede aparecer así si está utilizando java 6 y la última versión del plugin de compilador maven 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>
 0
Author: Henry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-30 12:27:09

Ninguna de las respuestas anteriores resolvió completamente mi caso de uso.

Necesitaba eliminar el directorio que se estaba construyendo. Limpiar. Y luego reinstalar. Parece un problema de permisos silenciosos.

 0
Author: piperchester,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-10 22:29:30

Tuve este problema en IntelliJ IDEA 14 hasta que entré en el menú Archivo Structure> Estructura del proyecto, cambiando el SDK del proyecto a 1.7 y el nivel de idioma del proyecto a 7.

 0
Author: Jon Onstott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 15:59:56

Tuve este problema al trabajar con eclipse, tuve que cambiar la ruta de construcción del proyecto para que se refiera a jre 7

 0
Author: osama yaccoub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 15:40:22