web-dev-qa-db-fra.com

Intellij - Impossible d'utiliser les nouvelles classes Java 8 - Erreur: "Utilisation de l'API documentée sous le nom @since 1.6+ .."

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?

161
Nerrve

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

350
Nerrve

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.

enter image description here

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

enter image description here

46
Ajay Kumar

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.

picture shows that Maven is second from last item in project right click menu

30
Boris Treukhov

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

enter image description here

Puis

enter image description here

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>
15
Hearen

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>
4
harun ugur

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

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.

1
Cody S

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
1
Beezer