Estoy tratando de compilar mi proyecto con Java 11.
Cuando trato de ejecutar la aplicación con Java 8 como la versión de Java en pom.xml, funciona bien. Pero cuando intento ejecutarlo con Java 11, arroja un error.
Error fatal al compilar: versión de destino no válida: 11
Intenté solucionarlo de varias maneras, como cambiar la variable de entorno, actualizar la ruta y apuntar %JAVA_HOME% a Java 11.
Los comandos y sus resultados en mi computadora son los siguientes:
> java -version java version "11.0.8" 2020-07-14 LTS > echo %JAVA_HOME% C:\Program Files\Java\jdk-11.0.8
Estoy usando IntelliJ IDEA y he realizado los cambios necesarios como se sugiere en este tutorial.
Mi pom.xml se parece a esto:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.2.0</version> <configuration> <version>1</version> <projectId>businessapplication-6963d</projectId> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> </project>
Cuando reviso la versión de Maven, muestra JDK 1.8 como la versión de Java:
mvn --version Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_241\jre
¿Cómo puedo apuntar a Maven a Java 11? O, si ese no es el problema, ¿cómo resolver este problema? No creo que esta pregunta sea un duplicado de la versión de destino no válida: 1.7 , ya que ya implementé las soluciones proporcionadas en ese hilo.
Error después de compilar el proyecto
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error compiling: invalid target release: 11 -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Path Environment Variable is :- C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\bin\Intel64; C:\Program Files (x86)\Intel\iCLS Client\; C:\Program Files\Intel\iCLS Client\; C:\WINDOWS\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem; C:\WINDOWS\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT; C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\WINDOWS\System32\OpenSSH\; C:\Delhi 2.0\apache-maven-3.6.1\bin; C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Files\Intel\WiFi\bin\; C:\Program Files\Common Files\Intel\WirelessCommon\; C:\Program Files\Git\cmd;D:\Flutter\flutter\flutter\bin; C:\Users\Infinity97\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin; C:\Users\Infinity97\AppData\Local\Microsoft\WindowsApps; C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.2\bin; H:\apache-maven-3.6.3\bin; C:\Program Files\PostgreSQL\12\bin; C:\Program Files\PostgreSQL\12\lib; C:\Program Files\Docker Toolbox
Estaba enfrentando el mismo problema. Establecer la variable de entorno JAVA_HOME en el JDK correcto resolvió mi problema.
java -version mostraba la versión correcta, pero el eco %JAVA_HOME% apuntaba al JDK incorrecto. Arreglarlo, resolvió este problema para mí.
Verifique el inicio de Java en la ruta dentro de la variable de entorno, debe apuntar a jdk 1.8 en su directorio de instalación de Java,
Verifique lo siguiente dentro de pom.xml
<java.versión>11</java.versión>
Reemplace esta entrada con la siguiente
<java.version>1.8</java.version>
Si otras personas tienen el mismo problema pero con Eclipse (sé que OP se refería a IntelliJ IDEA) también verifique el JRE en uso para Maven:
Para futuros viajeros en el tiempo. Primer intento
/usr/libexec/java_home -V
Esto enumerará todas las posibles rutas JAVA_HOME posibles en su máquina. Tienes dos opciones: -
Agregar la línea (proyecto permanente)
JAVA_HOME="/path/to/obtained/from/command/lib"
en su archivo maven.bat, idealmente justo después de los comentarios iniciales
Correr
export JAVA_HOME=/path/to/obtained/from/command/lib
Antes de ejecutar el comando mvnw
esto es lo que me ayudo: El problema debe ser que está usando 8 localmente pero apuntando a una versión diferente en su pom.xml
Tuve el mismo problema, incluso se configuró la variable JAVA-Version 11 y JAVA_HOME correcta.
Cambiar a otro proveedor de Java de AdoptOpenJDK a Corretto lo resolvió.
Puede usar SDKMAN para cambiar fácil y rápidamente entre diferentes versiones y proveedores de Java. (La variable JAVA_HOME se configurará automáticamente como correcta por SDKMAN).
Instalar SDKMAN por
curl -s "https://get.sdkman.io" | bash
luego ingrese en la terminal:
source "$HOME/.sdkman/bin/sdkman-init.sh"
para asegurarse de que la instalación fue exitosa:
sdk version
Instale Java 11:
sdk install java 11.0.13.8.1-amzn sdk default java 11.0.13.8.1-amzn
Para verificar las versiones, el tiempo de ejecución y el proveedor:
java --version mvn -v
La forma más rápida y sencilla es usar SDKMAN https://sdkman.io/ :
sdk install 11.0.11.hs-adpt
sdk list java
para la lista de jdk disponibles java=11.0.11.hs-adpt
use sdk env
para cambiar a jdk derecho.
Para cambiar automáticamente a la versión de jdk elegida, habilítelo en el archivo de configuración de sdkman ( ~/.sdkman/etc/config
)
sdkman_auto_env=true
Parece que tienes el conjunto JAVA_HOME
en tu mvn.bat
. Podría estar apuntando a la versión anterior de Java (es decir, 8 en su caso).
set JAVA_HOME=C:\path\to\jdk11
intente usarlo en la primera línea, antes de llamar a maven.
Experimentando este problema al intentar implementar la aplicación Spring Boot en Heroku.
Mi JAVA_HOME se configuró correctamente pero aún recibía el mismo error.
Pero entonces esto funcionó para mí:
En su pom.xml agregue o adapte a su propio contexto:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
solo cambia esto
<properties> <java.version>11</java.version> </properties>
para
<properties> <java.version>1.8</java.version> </properties>