Error grave al compilar: versión de destino no válida: 1.8 -> [Ayuda 1]

170

Problema similar al publicado en una versión de destino no válida: 1.7 pero después de seguir el blog, mi problema aún no se ha resuelto.

Error al ejecutar el objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) on project hm_app: Error grave al compilar: versión de destino no válida: 1.8 -> [Ayuda 1]

Estaba siguiendo como tutorial cuando me enfrenté a este problema.

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

salidas

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4
rvd
fuente
3
... y estás seguro de que tienes Java 8 instalado en alguna parte?
Makoto
tengo x86, 64 java 7 y no java 8
rvd
3
Bueno. Entonces, ¿por qué estás tratando de compilar código Java 8 sin un compilador Java 8?
Makoto
@Makoto ty por investigar mi problema al instalar Java 8 lo resolvió ... ty man :)
rvd
@ Makoto Finalmente entendí lo que estabas diciendo "Está bien. Entonces, ¿por qué estás tratando de compilar código Java 8 sin un compilador Java 8?" así que acabo de cambiar mi archivo pom.xml java.version> 1.8 </java.version> a java.version> 1.7 </java.version> y también podría usar mvn compile en java7
rvd

Respuestas:

281

Has configurado tu %JAVA_HOMEjdk 1.7, pero estás intentando compilar usando 1.8. Instale jdk 1.8 y asegúrese de %JAVA_HOMEapuntar a eso o baje la versión de destino a 1.7.

lanzamiento objetivo inválido: 1.8

La versión de destino se refiere a la versión jdk.

Comportamiento
fuente
77
una solución posible más en mi caso es editar el archivo pom.xml java.version> 1.8 </java.version> to java.version> 1.7 </java.version>
rvd
1
Eso es específicamente donde Maven busca la versión de Java. Así que efectivamente cambiaste la versión de Java a una que tenías instalada en tu% JAVA_HOME.
Zavior
2
En mi Mac, exporto JAVA_HOME = /usr/libexec/java_home -v 1.8para establecer JAVA_HOME en la ubicación adecuada para 1.8 JDK. Suministre su versión favorita en lugar de 1.8. (Hay backticks después de = y después de 8).
bruce szalwinski
Sí, claro, me tienes. Lo cambié para compilar otro programa heredado que solo admite 1.7 ayer: D ¡Gracias!
Davut Gürbüz
31

Pon el valor en el complemento:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

El error fue uso:

<source>${java.version}</source>
<target>${java.version}</target>
Camila Macedo
fuente
2
En mi caso, la solución es establecer el origen y el destino en 1.7
thinkhy
en que archivo puedo encontrar esto?
Yusril Maulidan Raji
21

En mi caso, la "configuración de ejecución" de Maven estaba usando el JRE incorrecto (1.7). Asegúrese de marcar Ejecutar -> Ejecutar configuraciones -> (Tab) JRE para que sea un jdk1.8.x.

Roland Ettinger
fuente
eso es cierto, por lo que tenemos que verificar lo siguiente la próxima vez si aparece este error: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan
13

El problema se resolvió porque tenía un JDK apuntando a 1.7 y JRE apuntando a 1.8. Compruebe en el símbolo del sistema mi escritura

java -version

y

javac -version.

Ambos deberían ser lo mismo.  

Bikramjit Saha
fuente
5

Para eclipse, así es como resolví mi problema:

  1. Preferencias -> Compilador -> Nivel de compilador del compilador (Cambiar a 1.8) ingrese la descripción de la imagen aquí

  2. Perferencias -> JRE instalados -> seleccione JAVA SE 8 1.8 ingrese la descripción de la imagen aquí

  3. Reconstruir a través de Maven usando Ejecutar como Maven Build

Ya no debería mostrarte el error de objetivo no válido.
Nota: No tuve que configurar ni cambiar ninguna otra variable en mi terminal. Espero que esto ayude.

РАВИ
fuente
2

Poner eso en su .profile se encargará dinámicamente de su $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Luego cierre su caparazón, abra uno nuevo y pruebe con

echo $JAVA_HOME

Debería mostrar algo como

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

De lo contrario , elimine cualquier otra asignación de JAVA_HOME en sus scripts de inicio. Recuerde que estos scripts de inicio comienzan con un .modo que están ocultos y no se incluirán al usar *comodines, por ejemplo, si desea agrupar todos los archivos de su directorio de inicio, debe:

grep -s JAVA_HOME ~/.* --exclude=.bash_history
lilalinux
fuente
1

El problema al que me enfrentaba era que pude hacer una compilación maven desde el símbolo del sistema pero no desde Eclipse. Lo que funcionó para mí en eclipse es que cambié la configuración de ejecución para apuntar a la carpeta JRE dentro de JDK en lugar de dejarla en Carpeta JDK solo según el estándar. Esta solución también puede funcionar para usted, pero intente esto si y solo si todas las rutas de Java son correctas, java y javac muestran la misma versión que está presente en el objetivo de pom.xml.

Vaibhav Gupta
fuente
Este fue mi problema y solución.
Skychan
1

Me enfrenté a este problema al implementar Dokku, por alguna razón estaba eligiendo JDK 1.7

Crear un system.propertiesarchivo y configurarlo java.runtime.version=1.8resolvió el problema. Dokku ahora usa Java versión 8. Elegir un JDK en Heroku

Nunca tuve que hacerlo antes ...

Edmore M Gonese Digolodollarz
fuente
La pista aún funciona. Tuve que buscar mucho para cambiar la versión de Java en Dokku a 11. Muchas gracias.
Señor Vanderbilt
1

Como mencionó Camila Macedo: debe señalar explícitamente la versión de Java para el compilador-complemento. Para el arranque de primavera, puede hacerlo mediante la siguiente propiedad:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>
M. Gryshenko
fuente
Sí, la configuración lo maven.compiler.releasearregló en mi proyecto Maven.
Cortex
1

Usando IntelliJ solo tuve que instalar otra versión JDK (superior). Después de reiniciar IDE, todo funcionó e incluso se resolvieron todas las dependencias.

Markus Zeller
fuente
1
Reiniciar intelliJ fue la clave para mí. Actualicé la variable de entorno JAVA_HOME para que apunte a diferentes versiones de Java, pero parece que la variable del sistema no se actualiza en la sesión CMD existente. Posiblemente sería suficiente crear una nueva sesión de Terminal.
Ubeogesh
0

Esta pregunta no era explícitamente sobre Docker, pero recibí el mismo error cuando tenía un archivo pom.xml dirigido a 1.9 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... pero luego intentó ejecutar pruebas contra un contenedor Docker especificando "maven" por sí mismo.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Para mí, la solución era apuntar a la versión exacta que necesitaba.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Puede obtener más información aquí ).

vivat piscis
fuente
0

En la máquina Windows, puede configurar temporalmente la versión de Java.
Por ejemplo, para cambiar la versión a Java 8, ejecute este comando en cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65
usuario1316369
fuente
0

Haga una actualización forzada de Maven que traerá las versiones compatibles de 1.8 Jar y luego, mientras compila, actualice las versiones de JRE en el entorno Ejecutar a 1.8 desde Ejecutar configuraciones y presione RUN

Arenoso
fuente
0

Si está utilizando Eclipse IDE, vaya al menú Ventana y seleccione preferencias y allí busque los JRE instalados y seleccione el JRE que necesita para construir el proyecto

Himanshu Kumar
fuente
-4

Lo que funcionó en mi caso es esto:

Abrí pom.xmly reemplacé uno de los complementos como se muestra a continuación.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Antes de editar las etiquetas de origen y destino que ambas tenían 1.8, cambié eso 1.7y funcionó.

VIJAYKUMAR REDDY ALAVALA
fuente
¿Entiendes el cambio que has hecho o acabas de hacer el cambio esperando lo mejor?
Popeye
Ambos. Entiendo que el proyecto ahora se ejecuta en la versión Java 1.7. Lo hice con la esperanza de que funcione.
VIJAYKUMAR REDDY ALAVALA