Intellij - Impossibile utilizzare le nuove classi Java 8 - Errore: "Utilizzo dell'API documentato come @since 1.6+ .."


168

Sto cercando di utilizzare un java.lang.function.Functionnel mio codice java 8 base, ma continuo a ottenere il seguente errore in Intellij.

Utilizzo dell'API documentato come @since 1.6+ Questa ispezione trova tutti gli usi dei metodi che hanno il tag @since nella loro documentazione. Ciò può essere utile quando lo sviluppo viene eseguito con la versione SDK più recente come piattaforma di destinazione per la produzione

Mi sembra di avere le impostazioni corrette di progetto e compilatore

Impostazioni del progetto: (File -> Struttura del progetto)

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

Impostazioni del compilatore: (File -> Impostazioni)

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

Qual è il problema?

Risposte:


365

Modificata la risposta in base al commento di Bastien Jansen.

Sembra che ci sia un'altra impostazione del progetto che influenza il livello del compilatore. Un'indicazione sottile di questo problema è quando il compilatore inizia a lamentare che la versione java di origine e destinazione è diversa da quella specificata durante la compilazione del codice

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.

Per sbarazzarsi di questo, è necessario aprirsi

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

e cambiarlo al livello desiderato, ad esempio 1.8 o al livello di lingua predefinito del progetto


6
Nelle impostazioni del progetto, è necessario configurare ciascun modulo per utilizzare il Project defaultlivello della lingua (nella Sourcesscheda).
Bastien Jansen,

@BastienJansen grazie. Modificata la risposta in base ai tuoi commenti!
Nerrve,

7
Project Settingssi trova inFile -> Project Structure
Karl

6
Perché questo debba essere impostato in così tanti posti è oltre me. Grazie.
Richard Rast,

1
Questa impostazione del progetto viene sovrascritta quando si esegue una reimportazione se si utilizza Maven. Questo accade ogni volta che cambi il pom e ti frustrerà rapidamente dover mantenere aggiornate le impostazioni di Intellij. Per i progetti Maven, le seguenti modifiche pom sono più appropriate.
Jay,

51

Se si utilizza maven, aggiungere la riga seguente nel file pom.xml di configurazione e quindi reimportare o crearlo da 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>

Altrimenti seleziona il compilatore java e il livello della lingua dal percorso sottostante.

File> Struttura del progetto> Impostazioni del progetto> Moduli> il nome del tuo modulo> Fonti> Livello lingua> scegli quello che ti serve.

inserisci qui la descrizione dell'immagine

Cambia livello lingua da qui: -

inserisci qui la descrizione dell'immagine


1
Grazie mille per questo. Non so perché questo non è predefinito. Anche nel 2019.1.3 che sto usando.
eodeluga,

33

In realtà, se si utilizza Maven e le pom.xmlproprietà del progetto sono configurate correttamente

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

È possibile reimportare i parametri Maven per il intellij-ideaprogetto: fare clic con il pulsante destro del mouse sulla voce radice del progetto, quindi Maven -> Reimportin fondo.

l'immagine mostra che Maven è secondo dall'ultimo elemento nel menu di scelta rapida del progetto


25

L'ho appena risolto come segue:

Fare clic con il tasto destro del mouse sul progetto -> Apri le impostazioni del modulo -> Moduli -> Sorgenti -> 8 o successive

inserisci qui la descrizione dell'immagine

E poi

inserisci qui la descrizione dell'immagine

Se l'errore persiste e si utilizza maven , è necessario aggiungere la configurazione di build in 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>

4

File> Impostazioni> Build, Execution, Deployment> Java Compiler

Cambia la versione del codice byte di destinazione in 1.8 del modulo per cui stai lavorando.

Se stai usando Maven

Aggiungi il plug-in del compilatore a pom.xml nel nodo di progetto di livello superiore:

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


1

Se stai usando Gradle, non dimenticare di assicurarti che quanto segue sia impostato su 1.8 e non su 1.5 (ad esempio per qualche bizzarro motivo in Intelij, il valore predefinito è 1.5), quindi non importa cosa fai a livello di progetto per impostare il compilatore livello di compatibilità, questa impostazione continuerà a causare problemi con le funzionalità Java 8 che non riconoscerebbe:

version '1.0-SNAPSHOT'

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

sourceCompatibility = 1.8

1

Forse la tua configurazione del repository ha proprietà include la versione del compilatore. esaminare il settings.xmlfile.

<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

C'è un altro posto che potrebbe causare questo problema, indipendentemente dal fatto che tu stia usando o meno Maven o Gradle.

In Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level, l'impostazione predefinita (credo) è impostata su Respecting to project language level settings, ma può essere impostata su Higher than:, che ignora le impostazioni del progetto.

Ciò significa che se segui le istruzioni nelle altre risposte e imposti il ​​livello linguistico del tuo progetto su, diciamo, 8, ma l'ispezione è impostata su Higher than: 7, IDEA continuerà a rispondere .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.