intellij idea - jdk - Intellij-No se pueden usar las nuevas clases de Java 8-Error: "Uso de API documentado como @since 1.6+.."
intellij java 6 (8)
Archivo> Configuración> Compilación, ejecución, implementación> Compilador Java
Cambie la versión de código de bytes de destino a 1.8 del módulo para el que está trabajando.
Si estás usando Maven
Agregue el complemento del compilador a pom.xml en el nodo del proyecto de nivel superior:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Estoy tratando de usar una función
java.lang.function.Function
en mi base de código java 8, pero sigo recibiendo el siguiente error en Intellij.
Uso de API documentado como @since 1.6+ Esta inspección encuentra todos los usos de los métodos que tienen la etiqueta @since en su documentación. Esto puede ser útil cuando el desarrollo se realiza bajo la versión más reciente del SDK como plataforma de destino para la producción
Parece que tengo la configuración correcta de Proyecto y Compilador
Configuración del proyecto: (Archivo -> Estructura del proyecto)
Project Settings -> Project -> Project SDK = Java 1.8
Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc
Configuración del compilador: (Archivo -> Configuración)
Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version : 1.8
Build, Execution, Deployment -> Compiler -> Java Compiler -> Per module Bytecode Version -> Target Bytecode Version : 1.8
¿Cuál es el problema?
Editó la respuesta basada en el comentario de Bastien Jansen.
Parece que hay otra configuración de proyecto que afecta el nivel del compilador. Una indicación sutil de este problema es cuando su compilador comienza a quejarse de que la versión de Java de origen y destino es diferente de la que especificó mientras compila el código
Warning:java: source value 1.5 is obsolete and will be removed in a future release
Warning:java: target value 1.5 is obsolete and will be removed in a future release
Warning:java: To suppress warnings about obsolete options, use -Xlint:-options.
Para deshacerte de esto, debes abrir
File -> Project Structure -> Project Settings -> Modules -> "Your Module Name" -> Sources -> Language Level
y cambie eso al nivel deseado, es decir, 1.8 o el nivel de idioma predeterminado del proyecto
En realidad, si está utilizando Maven y las propiedades de su proyecto
pom.xml
están configuradas correctamente
<project xmlns="...>
....
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project
Puede
intellij-idea
a importar los parámetros de Maven al proyecto
intellij-idea
: haga clic con el botón derecho en la entrada raíz del proyecto, luego
Maven -> Reimport
que se encuentra en la parte inferior.
Hay otro lugar que podría estar causando este problema, independientemente de si está utilizando Maven o Gradle.
En la
Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn''t available at the configured language level
Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn''t available at the configured language level
Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn''t available at the configured language level
, el valor predeterminado (creo) está establecido en
Respecting to project language level settings
, pero se
puede
establecer en
Higher than:
que ignora la configuración del proyecto.
Lo que significa que si sigue las instrucciones en las otras respuestas y establece el nivel de idioma de su proyecto en, digamos, 8, pero la inspección se establece en
Higher than: 7
, IDEA seguirá dando un ajuste.
Lo arreglé de la siguiente manera:
Haga clic derecho en el proyecto -> Abrir configuración del módulo -> Módulos -> Fuentes -> 8 o superior
Y entonces
Si aún encuentra el error y usa
maven
, debe agregar la configuración de compilación en su
pom.xml
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Si está utilizando Gradle, no olvide asegurarse de que lo siguiente esté configurado en 1.8 y no en 1.5 (por ejemplo, por alguna extraña razón en Intelij, por defecto es 1.5), así que no importa lo que haga a nivel de proyecto para configurar el compilador nivel de compatibilidad, esta configuración hará que continúe dándole problemas con las características de Java 8 que no reconocería:
version ''1.0-SNAPSHOT''
apply plugin: ''groovy''
apply plugin: ''java''
sourceCompatibility = 1.8
Si está utilizando maven, agregue la siguiente línea en su archivo de configuración pom.xml y luego vuelva a importarlo o compílelo desde maven.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
De lo contrario, seleccione el compilador de Java y el Nivel de idioma de la ruta a continuación.
Archivo> Estructura del proyecto> Configuración del proyecto> Módulos> el nombre del módulo> Fuentes> Nivel de idioma> elija el que necesita.
Cambiar el nivel de idioma desde aquí: -
Tal vez su configuración de repositorio tiene propiedades que incluyen la versión del compilador.
examinar el archivo
settings.xml
.
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>