IntelliJ: Error: java: error: versión de lanzamiento 5 no compatible

14

Estoy usando IntelliJ IDEA Ultimate 2019.3.1 . Cada vez que intento iniciar un proyecto Java Maven simple (puede ser incluso un simple Hello World) me sale el siguiente error:

Error:java: error: release version 5 not supported

Ejecutando java --versionpor terminal obtengo el siguiente resultado:

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.1, mixed mode, sharing)

Ejecutando javac --versionpor terminal obtengo el siguiente resultado:

javac 11.0.5

Al ir a la configuración del compilador de Java (como se sugiere aquí ) veo esto:

Configuración del compilador de Java

Intenté editar la " Versión de código de bytes de destino " a 1.8, pero recibo los siguientes errores:

Error:(1, 26) java: package javafx.application does not exist
Error:(2, 20) java: package javafx.stage does not exist
Error:(4, 27) java: cannot find symbol
  symbol: class Application
Error:(12, 23) java: cannot find symbol
  symbol:   class Stage
  location: class Main
Error:(7, 9) java: cannot find symbol
  symbol:   method launch(java.lang.String[])
  location: class Main
Error:(11, 5) java: method does not override or implement a method from a supertype

Al cambiarlo a la versión 1.11 , obtengo este error:

Error:java: Source option 5 is no longer supported. Use 6 or later.

¿Cuál crees que sea el problema? ¿Cómo puedo resolverlo?

Robb1
fuente
¿Cuál es el nivel de idioma del proyecto y los módulos?
Bas Leijdekkers

Respuestas:

33

Ver  https://stackoverflow.com/a/12900859/104891 .

En primer lugar, configure el language level/ release versionsin pom.xmlasí:

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Maven establece el valor predeterminado en 1.5 de lo contrario. También deberá incluir el maven-compiler-pluginsi aún no lo ha hecho:

<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</dependency>

Además, intente cambiar la versión de Java en cada uno de estos lugares:

Archivo -> Estructura del proyecto -> Proyecto -> Proyecto SDK -> 11.

Archivo -> Estructura del proyecto -> Proyecto -> Nivel de idioma del proyecto -> 11.

Archivo -> Estructura del proyecto -> Proyecto -> Módulos -> -> Fuentes -> 11

En proyecto -> ctrl+ alt+ s-> Build, Execution, Deployment -> Compiler -> Java Compiler -> Project bytecode version -> 11

En proyecto -> ctrl+ alt+ s-> Build, Execution, Deployment -> Compiler -> Java Compiler -> Module -> 1.11.

Konstantin Annikov
fuente
2
He hecho todo, pero aún veo el mismo error cada vez que ejecuto la aplicación
Tushar Jajodia
@TusharJajodia intenta incluir maven-compiler-plugincomo una dependencia
Josh Johnson
Después de probar varias soluciones en línea sin suerte, esta línea en particular solucionó el problema: Archivo -> Estructura del proyecto -> Proyecto -> Módulos -> -> Fuentes -> 11
Maude
En realidad, la forma correcta de hacerlo para java 9+ es definir el maven-compiler-plugincomplemento como en lugar de la dependencia. ¡No es necesario configurar nada en IntelliJ, solo configure su pom de la manera correcta y funcionará en IntelliJ de inmediato !
Jacob van Lingen hace
2

Me tomó un tiempo agregar una solución real, pero aquí se explica cómo deshacerse de este error de compilación.

  1. Abrir las preferencias de Intelij
  2. Busque "compilador (o algo así como" compi "
  3. desplácese hacia abajo hasta Maven -> compilador de Java. En el panel derecho, habrá una lista de módulos y su versión de compilación de Java asociada "versión de código de bytes de destino".
  4. Seleccione una versión> 1.5. Es posible que deba actualizar su jdk si no hay uno disponible. ingrese la descripción de la imagen aquí
borisveis
fuente
1

Si está utilizando Spring Boot como padre, debe establecer la propiedad java.version, ya que esto establecerá automáticamente las versiones correctas.

<properties>
   <java.version>11</java.version>
</properties>

La propiedad definida en su propio proyecto anula lo que se establece en el pom padre. Esto anula todas las propiedades necesarias para compilar a la versión correcta.

Puede encontrar información aquí: https://www.baeldung.com/maven-java-version

V Jansen
fuente
Ahora también estoy empezando a aprender sobre Spring Boot, por lo que esta información puede ser realmente útil para mí :) ¿podría explicarla más detalladamente? (¿En qué archivo debo cambiar esas propiedades, qué debo escribir exactamente ...?) ¡Gracias!
Robb1
1
Agregué información adicional en mi publicación.
V Jansen
1

si está utilizando intellj consiguió configurar => compilador, cambie la versión a su versión actual de java

Sikhumbuzo Sithole
fuente
0

Agregué el siguiente código a mi pom.xmlarchivo, resolvió mi problema.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Jéssica Machado
fuente
0

Debe agregar solo dos líneas en su pom.xml y luego su problema desaparecerá.
Agregue estas dos líneas en su pom.xml -

<!--pom.xml-->
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Mehedi Abdullah
fuente
0

Dentro de IntelliJ, abra el archivo pom.xml

Agregue esta sección antes (si su archivo ya tiene una sección, simplemente agregue las líneas a continuación a esa sección existente):

<properties> 
      <maven.compiler.source>1.8</maven.compiler.source> 
      <maven.compiler.target>1.8</maven.compiler.target> 
   </properties>`
Ali Shah
fuente
0

La única solución de trabajo en mi caso fue agregar el siguiente bloque a pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version> <configuration> <release>12</release>
        </configuration>
        </plugin>
    </plugins>
</build>
Muhammed Gül
fuente