Intellij - Impossible d'utiliser les nouvelles classes Java 8 - Erreur: «Utilisation de l'API documentée sous la forme @since 1.6+ ..»

168

J'essaie d'utiliser un java.lang.function.Functiondans ma base de code java 8, mais je continue à recevoir l'erreur suivante dans Intellij.

Utilisation de l'API documentée comme @since 1.6+ Cette inspection trouve toutes les utilisations des méthodes qui ont 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 bons paramètres de projet et de 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?

Nerrve
la source

Réponses:

365

Modification de la réponse basée sur le commentaire de Bastien Jansen.

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 que la version java source et cible est 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 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 le niveau de langue par défaut du projet

Nerrve
la source
6
Dans les paramètres du projet, vous devez configurer chaque module pour utiliser le Project defaultniveau de langue (dans l' Sourcesonglet).
Bastien Jansen
@BastienJansen merci. Modification de la réponse en fonction de vos commentaires!
Nerrve
7
Project Settingsse trouve dansFile -> Project Structure
Karl
6
Pourquoi cela doit être installé dans tant d'endroits me dépasse. Merci.
Richard Rast
1
Ce paramètre de projet est écrasé lorsque vous effectuez une réimportation si vous utilisez Maven. Cela se produit chaque fois que vous changez le pom, et vous frustrera rapidement d'avoir à garder vos paramètres intellij à jour. Pour les projets Maven, les changements de pom ci-dessous sont plus appropriés.
Jay
51

Si vous utilisez maven, ajoutez la ligne ci-dessous dans votre fichier de configuration pom.xml , puis réimportez-le ou compilez- 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 le compilateur java et le niveau de langue ci-dessous.

Fichier> Structure du projet> Paramètres du projet> Modules> le nom de votre module> Sources> Niveau de langue> choisissez celui dont vous avez besoin.

entrez la description de l'image ici

Changer le niveau de langue à partir d'ici: -

entrez la description de l'image ici

Ajay Kumar
la source
1
Merci beaucoup pour cela. Je ne sais pas pourquoi ce n'est pas par défaut. Même dans 2019.1.3 que j'utilise.
eodeluga
33

En fait, si vous utilisez Maven et que les pom.xmlpropriétés de votre projet 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 le intellij-ideaprojet - faites un clic droit sur l'entrée racine du projet, puis Maven -> Reimportqui se trouve en bas.

l'image montre que Maven est le deuxième du dernier élément dans le menu contextuel du projet

Boris Treukhov
la source
25

Je viens de le réparer comme suit:

Faites un clic droit sur le projet -> Ouvrir les paramètres du module -> Modules -> Sources -> 8 ou plus

entrez la description de l'image ici

Puis

entrez la description de l'image ici

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>
Entendre
la source
4

Fichier> Paramètres> Construction, exécution, déploiement> Compilateur Java

Changez la version de bytecode 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>

harun ugur
la source
1

Si vous utilisez Gradle, n'oubliez pas de vous assurer que ce qui suit est défini sur 1,8 et non sur 1,5 (par exemple pour une raison étrange dans Intelij, il est par défaut sur 1,5) donc peu importe ce que vous faites au niveau du projet pour définir le compilateur niveau de compatibilité, ce paramètre le fera continuer à vous poser des problèmes avec les fonctionnalités de Java 8 qu'il ne reconnaîtrait pas:

version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'

sourceCompatibility = 1.8
Beezer
la source
1

Peut-être que votre configuration de référentiel a des propriétés incluant la version du compilateur. examiner le settings.xmlfichier.

<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>
刘泽森
la source
1

Il existe un autre endroit qui pourrait être à l'origine de ce problème, 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 surHigher than: , ce qui ignore les paramètres du projet.

Cela signifie que si vous suivez les instructions des autres réponses et que vous définissez le niveau de langue de votre projet sur, par exemple, 8, mais que l'inspection est définie sur Higher than: 7, IDEA fera toujours un ajustement.

Cody S
la source