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 proyectoAbrir 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 / ConfiguracionesCompilació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
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 intellij 14, las siguientes configuraciones me funcionaron. Configuración de Intellij14
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
Cambie la Source Compatibility
de Source Compatibility
y la Target Compatibility
a 1.8
- 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:
- Asegúrese de estar utilizando JDK 1.8 (Ventana> Preferencias> JRE instalados y compilador);
- 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
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.
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
- 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
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 Menu
→ Project Structure
→ Project
, cambie el Project Language Level
a 8.0 - Lambdas, type annotations etc.