jdk intellij java intellij-idea lambda java-8

java - add jdk intellij



Java "expresiones lambda no soportadas en este nivel de lenguaje" (20)

Estaba probando algunas características nuevas de Java 8 y copié el ejemplo en mi IDE (originalmente Eclipse, luego IntelliJ) como se muestra aquí: http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java

Eclipse no ofreció soporte alguno para las expresiones lambda e IntelliJ siguió informando de un error "Expresiones lambda no compatibles a este nivel de lenguaje". Me gustaría saber si esto es un problema con mi instalación, el código o el soporte.


Agregar el siguiente bloque al archivo pom funcionó para mí:

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


Como señaló Stephen C, Eclipse Kepler (4.3) tiene soporte para Java 8 cuando se instala el parche (instrucciones de instalación here )

Una vez instalado, necesitarás decirle a tus proyectos que utilicen Java 8. Primero agrega el JDK al eclipse:

  • Ve a Ventana -> Preferencias
  • Ir a Java -> JRE instalados
  • Agregue VM estándar y señale la ubicación del JRE
  • Luego ve al compilador
  • Establezca el nivel de cumplimiento del compilador en 1.8

Luego dígale al proyecto que use JDK 1.8:

  • Ir a Proyecto -> preferencias
  • Ir al compilador de Java
  • Habilitar configuraciones específicas del proyecto
  • Establezca el nivel de cumplimiento del compilador en 1.8

Compilar con Java 8 (lambdas, etc.) en IntelliJ IDEA 15;

  • CTRL + ALT + SHIFT + S o Archivo / Estructura del proyecto

  • Abrir pestaña de proyecto

  • Establezca Project SDK en la versión java compatible (1.8)

  • Establezca el nivel de idioma del proyecto en 8

  • Pestaña Módulos abiertos

  • Establezca el nivel de idioma en 8, haga clic en Aceptar

  • CTRL + ALT + S o Archivo / Configuraciones

  • Compilación, ejecución, implementación / compilador / compilador de Java

  • Cambie la versión de bytecode de destino a 1.8, haga clic en Aceptar


Ctrl + Alt + Shift + S y luego del proyecto selecciona el nivel de idioma 1.8, lee más sobre Lambda Expressions here


Debe cambiar el código de fuente Language Level también en la pestaña Source (Parte de los módulos).


En Android studio canary build (3. +), puede hacer lo siguiente:

Archivo -> Estructura del proyecto -> Buscar en la sección Módulos, hay nombres de módulos de su clase. Haga clic en el módulo en el que desea actualizar Java a la versión 1.8. -> Cambie "Compatibilidad de origen" y "Compatibilidad de destino" a 1.8 de 1.7 o inferior. No cambies nada más. -> Haga clic en Aplicar

ahora gradle se volverá a sincronizar y se eliminará tu error.



En realidad, el soporte de Eclipse para Java 8 está disponible: mira here y here .

  • Para Kepler, está disponible como un "parche de características" contra SR2 (es decir, Eclipse 4.3.2)
  • Para Luna (Eclipse 4.4) estará en la versión estándar. ( calendario de lanzamiento )

Incluso después de aplicar las configuraciones específicas del proyecto definidas anteriormente en IntelliJ y Eclipse, todavía estaba fallando para mí.

Lo que funcionó para mí fue la adición del plugin maven con origen y destino con configuración 1.8 en POM XML:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.abc.sparkcore.JavaWordCount</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>


Los votos principales no funcionan en la última versión de Android Studio 3.0 o posterior, esta es la solución

  1. Archivo> Estructura del proyecto

Cambie la Source Compatibility de Source Compatibility y la Target Compatibility a 1.8

  1. Editar archivo de configuración

También puede configurarlo directamente en el archivo build.gradle correspondiente

android { ... // Configure only for each module that uses Java 8 // language features (either in its source code or // through dependencies). compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }


Para intellij 13, simplemente cambie el nivel de lenguaje del proyecto a 8.0 con la siguiente navegación.

File | | ---------Project Structure -> Project tab | |________Project language level

Módulo nivel lang

También tuve que actualizar el Modules lang level cuando no había un complemento maven para el java compiler .

File | | ---------Project Structure -> Modules tab | |________ language level

Pero este Module lang level se solucionará automáticamente si ya hay un maven plugin para él,

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

Después de los cambios todo se ve bien


Para los últimos usuarios que usan Android studio 3.0.1 o superior. Simplemente haga clic en Alt + Enter y actualice su nivel de idioma a 8.0 - Lambdas, escriba anotaciones, etc.


Para mí, ninguna de las soluciones proporcionadas funcionó.

Este debería ser su último recurso: -> Abra el archivo .iml de su proyecto, cambie el LANGUAGE_LEVEL a JDK_1_8 o la versión que desee. -> Si esto no ayuda, debe grep "JDK" en el directorio raíz de su proyecto y encontrar el archivo que contiene la configuración de la versión y configurarlo en su versión preferida.


Para tener soporte de Ecplise para expresiones lambda:

  1. Asegúrese de estar utilizando JDK 1.8 (Ventana> Preferencias> JRE instalados y compilador);
  2. Use la anotación @FunctionalInterface si define alguna nueva interfaz funcional para que eclipse le sugiera refactorizaciones relacionadas con Lambdas ( Interfaces funcionales) .

Posible causa # 1 (igual que las 3 primeras respuestas para esta pregunta): Configuración de la estructura del proyecto

  1. Archivo> Estructura del proyecto> En Configuración del proyecto, vaya a Proyecto> establezca Project SDK en 1.8 (con la versión 65 o superior, la última es 112) y establezca el Nivel de idioma del proyecto en 8.

  2. Archivo> Estructura del proyecto> En Configuración de plataforma, vaya a Proyecto> asegúrese de que su ruta de inicio JDK esté configurada en 1.8 (con la versión 65 o superior, la última es 112).

Si lo anterior no funciona, verifique la versión de código de byte de destino de su compilador y continúe con Possible Cause # 2.

Posible causa # 2: compilador

  1. Archivo> Configuraciones> Compilación, Ejecución, Despliegue> En Compilador, vaya a Compilador Java> establezca su Versión de Código de byte de Proyecto en 1.8, así como toda la Versión de Código de byte de Destino para sus módulos. Haga clic en Aplicar y presione OK . Reinicie su IntelliJ IDE. La expresión Lambda fue aceptada en mi IDE en este punto.

Los mejores deseos :)


Primero compruebe la versión de JDK que está utilizando, debería ser mayor que 1.8. Si es así, proceda a hacer los pasos siguientes. Cambiar el nivel de idioma del proyecto y los módulos en Intellij.

Proyecto 1.Fichero-> Estructura del proyecto-> Proyecto-> Nivel de idioma del proyecto Cambie a 8 para que funcionen las expresiones lamba 2.Fichero-> Estructura del proyecto-> Módulo-> Nivel de idioma del proyecto Cambie a 8 para que las expresiones lamba funcionen


Si obtiene No compatible con Idioma 5 , verifique esto: (Para mí fue en la sección Módulos )


Simplemente agregue compileOptions en la aplicación build.gradle yours:

android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }


Usando: IntelliJ IDEA 2017.1.4 Build # IU-171.4694.23

Cambiar el nivel de idioma a través de la pestaña Project Settings / Project no hizo nada. En cambio, presionar Alt + Intro y seleccionar "Establecer nivel de idioma en 8 - Lambdas, escribir anotaciones, etc." y se resolvió automáticamente.


En IntelliJ IDEA:

En el File MenuProject StructureProject , cambie el Project Language Level a 8.0 - Lambdas, type annotations etc.