it-swarm.com.de

Intellij - Kann keine neueren Java 8 Klassen verwenden - Fehler: "Verwendung der API dokumentiert als @since 1.6+ .."

Ich versuche, einen Java.lang.function.Function In meiner Java 8-Codebasis zu verwenden, aber in Intellij wird weiterhin der folgende Fehler angezeigt.

Verwendung der als @since 1.6+ dokumentierten API Bei dieser Überprüfung werden alle Verwendungen von Methoden ermittelt, deren Dokumentation das @since-Tag enthält. Dies kann nützlich sein, wenn die Entwicklung unter einer neueren SDK-Version als Zielplattform für die Produktion durchgeführt wird

Ich habe anscheinend die richtigen Projekt- und Compilereinstellungen

Projekteinstellungen: (Datei -> Projektstruktur)

Project Settings -> Project -> Project SDK = Java 1.8
Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc

Compiler-Einstellungen: (Datei -> Einstellungen)

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

Worin besteht das Problem?

161
Nerrve

Die Antwort wurde basierend auf dem Kommentar von Bastien Jansen bearbeitet.

Anscheinend gibt es eine andere Projekteinstellung, die sich auf die Compilerebene auswirkt. Ein subtiler Hinweis auf dieses Problem ist, wenn sich Ihr Compiler darüber beschwert, dass sich die Quell- und Zielversion Java von der unterscheidet, die Sie beim Kompilieren des Codes angegeben haben

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.

Um dies loszuwerden, müssen Sie sich öffnen

File -> Project Structure -> Project Settings -> Modules -> "Your Module Name" -> Sources -> Language Level

und ändern Sie dies auf die gewünschte Stufe, d. h. 1.8 oder die Sprachstufe Project Default

350
Nerrve

Wenn Sie maven verwenden, fügen Sie die folgende Zeile in Ihre Konfigurationsdatei pom.xml ein und importieren Sie sie erneut oder erstellen Sie sie aus 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>

Andernfalls wählen Sie Java Compiler und Sprachniveau von unten Pfad.

Datei> Projektstruktur> Projekteinstellungen> Module> Ihr Modulname> Quellen> Sprachniveau> Wählen Sie das gewünschte aus.

enter image description here

Sprachlevel wechseln von hier: -

enter image description here

46
Ajay Kumar

Wenn Sie Maven verwenden und Ihre pom.xml - Projekteigenschaften korrekt konfiguriert sind

<project xmlns="...> 
....
<properties>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project

Sie können Maven-Parameter erneut in das Projekt intellij-idea Importieren. Klicken Sie mit der rechten Maustaste auf den Projektstammeintrag und dann auf Maven -> Reimport, Der sich unten befindet.

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

30
Boris Treukhov

Ich habe es gerade wie folgt behoben:

Klicken Sie mit der rechten Maustaste auf das Projekt -> Moduleinstellungen öffnen -> Module -> Quellen -> 8 oder höher

enter image description here

Und dann

enter image description here

Wenn der Fehler weiterhin auftritt und Sie maven verwenden, müssen Sie die Build-Konfiguration in Ihrem 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

Datei> Einstellungen> Erstellen, Ausführen, Bereitstellen> Java Compiler

Ändern Sie die Zielbytecodeversion in 1.8 des Moduls, für das Sie arbeiten.

Wenn Sie Maven verwenden

Fügen Sie das Compiler-Plugin zu pom.xml unter dem Projektknoten der obersten Ebene hinzu:

<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

Vielleicht hat Ihre Konfiguration des Repository Eigenschaften wie Compiler-Version. untersuchen settings.xml Datei.

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

Es gibt einen anderen Ort, der dieses Problem verursachen könnte, unabhängig davon, ob Sie Maven oder Gradle verwenden oder nicht.

In Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level Ist die Standardeinstellung (glaube ich) auf Respecting to project language level settings Gesetzt, aber es kann kann auf Higher than: Gesetzt werden, wodurch die Projekteinstellungen ignoriert werden.

Dies bedeutet, dass, wenn Sie den Anweisungen in den anderen Antworten folgen und die Sprachstufe Ihres Projekts auf beispielsweise 8 einstellen, die Überprüfung jedoch auf Higher than: 7 Gesetzt ist, IDEA) trotzdem einen Fehler auslöst passen.

1
Cody S

Wenn Sie Gradle verwenden, vergessen Sie nicht, sicherzustellen, dass Folgendes auf 1,8 und nicht auf 1,5 festgelegt ist (z. B. aus bizarren Gründen in Intelij standardmäßig auf 1,5), unabhängig davon, was Sie auf Projektebene tun, um den Compiler festzulegen Kompatibilitätslevel, diese Einstellung wird dazu führen, dass Sie weiterhin Probleme mit Java 8 Funktionen haben, die es nicht erkennen würde:

version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'Java'

sourceCompatibility = 1.8
1
Beezer