J'essaie d'utiliser un Java.lang.function.Function
dans ma base de code Java 8, mais je continue à avoir l'erreur suivante dans Intellij.
Utilisation de l'API documentée sous le nom @since 1.6+ Cette inspection détecte toutes les utilisations des méthodes ayant la balise @since dans leur documentation. Cela peut être utile lorsque le développement est effectué sous une version plus récente du SDK en tant que plate-forme cible pour la production.
Je semble avoir les paramètres corrects du projet et du compilateur
Paramètres du projet: (Fichier -> Structure du projet)
Project Settings -> Project -> Project SDK = Java 1.8
Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc
Paramètres du compilateur: (Fichier -> Paramètres)
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
Quel est le problème?
Edité la réponse sur la base du commentaire de Bastien Jansen.
Il semble qu'il existe un autre paramètre de projet qui affecte le niveau du compilateur. Une indication subtile de ce problème est lorsque votre compilateur commence à se plaindre de la version source et cible Java différente de celle que vous avez spécifiée lors de la compilation du code.
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.
Pour vous en débarrasser, vous devez vous ouvrir
File -> Project Structure -> Project Settings -> Modules -> "Your Module Name" -> Sources -> Language Level
et changez-le au niveau souhaité, c'est-à-dire 1.8 ou au niveau de langue par défaut du projet
Si vous utilisez maven, ajoutez la ligne ci-dessous dans votre fichier de configuration , pom.xml , puis réimportez-le ou créez-le à partir de 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>
Sinon , sélectionnez Java le compilateur et le niveau de langue sous le chemin.
Fichier> Structure du projet> Paramètres du projet> Modules> le nom de votre module> Sources> Niveau de langue> choisissez celui dont vous avez besoin.
Changer le niveau de langue à partir d'ici: -
En fait, si vous utilisez Maven et que vos propriétés de projet pom.xml
sont correctement configurées
<project xmlns="...>
....
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project
Vous pouvez réimporter les paramètres Maven dans intellij-idea
project - cliquez avec le bouton droit de la souris sur la racine du projet, puis sur Maven -> Reimport
qui se trouve en bas.
Je viens de le corriger comme suit:
Faites un clic droit sur le projet -> Ouvrir les paramètres du module -> Modules -> Sources -> 8 ou supérieur
Puis
Si l'erreur persiste et que vous utilisez maven , vous devez ajouter la configuration de construction dans votre 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>
Fichier> Paramètres> Construire, Exécuter, Déployer> Java Compilateur
Changez la version de code source cible en 1.8 du module pour lequel vous travaillez.
Si vous utilisez Maven
Ajoutez le plugin du compilateur à pom.xml sous le nœud de projet de niveau supérieur:
<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>
Peut-être que votre configuration de référentiel a des propriétés incluant la version du compilateur. examine le fichier 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>
Ce problème peut être dû à un autre endroit, que vous utilisiez ou non Maven ou Gradle.
Dans Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level
, la valeur par défaut (je crois) est définie sur Respecting to project language level settings
, mais elle peut être définie sur Higher than:
, ce qui ignore les paramètres du projet.
Ce qui signifie que si vous suivez les instructions des autres réponses et réglez le niveau de langue de votre projet sur 8, par exemple, mais que l'inspection est définie sur Higher than: 7
, IDEA va tout de même vous convenir.
Si vous utilisez Gradle, n'oubliez pas de vous assurer que les valeurs suivantes sont définies sur 1.8 et non sur 1.5 (par exemple, pour une raison étrange dans Intelij, la valeur par défaut est de 1.5). niveau de compatibilité, ce paramètre le fera continuer à vous causer des problèmes avec les fonctionnalités Java 8 qu'il ne reconnaîtrait pas:
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
apply plugin: 'Java'
sourceCompatibility = 1.8