Intellij - Tidak dapat menggunakan kelas Java 8 yang lebih baru - Kesalahan: "Penggunaan API didokumentasikan sebagai @ sejak 1,6+ .."

168

Saya mencoba menggunakan java.lang.function.Functiondalam kode java 8 basis saya, tetapi saya terus mendapatkan kesalahan berikut di Intellij.

Penggunaan API yang didokumentasikan sebagai @ sejak 1.6+ Pemeriksaan ini menemukan semua penggunaan metode yang memiliki tag @ sejak dalam dokumentasi mereka. Ini mungkin berguna ketika pengembangan dilakukan di bawah versi SDK yang lebih baru sebagai platform target untuk produksi

Saya sepertinya memiliki pengaturan Project dan Compiler yang benar

Pengaturan Proyek: (File -> Struktur Proyek)

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

Pengaturan Kompiler: (File -> Pengaturan)

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

Apa masalahnya?

Nerrve
sumber

Jawaban:

365

Mengedit jawaban berdasarkan komentar Bastien Jansen.

Tampaknya ada pengaturan proyek lain yang mempengaruhi level kompiler. Indikasi halus masalah ini adalah ketika kompiler Anda mulai mengeluh tentang sumber dan target versi java yang berbeda dari yang Anda tentukan saat Anda mengkompilasi kode

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.

Untuk menyingkirkan ini, Anda harus membuka

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

dan mengubahnya ke tingkat yang diinginkan yaitu 1,8 atau tingkat bahasa Default Proyek

Nerrve
sumber
6
Dalam pengaturan proyek, Anda harus mengonfigurasi setiap modul untuk menggunakan Project defaulttingkat bahasa (pada Sourcestab).
Bastien Jansen
@BastienJansen terima kasih. Mengedit jawaban berdasarkan komentar Anda!
Nerrve
7
Project Settingsditemukan diFile -> Project Structure
Karl
6
Mengapa ini perlu diatur di banyak tempat adalah di luar jangkauan saya. Terima kasih.
Richard Rast
1
Pengaturan proyek ini ditimpa ketika Anda melakukan impor ulang jika Anda menggunakan Maven. Ini terjadi setiap kali Anda mengubah pom, dan dengan cepat akan membuat Anda frustasi karena harus memperbarui pengaturan intellij Anda. Untuk proyek Maven, perubahan pom di bawah ini lebih tepat.
Jay
51

Jika Anda menggunakan maven maka Tambahkan baris di bawah ini dalam file pom.xml konfigurasi Anda dan kemudian masukkan kembali atau bangun dari 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>

Lain pilih compiler java dan Level Language dari bawah jalan.

File> Struktur Proyek> Pengaturan Proyek> Modul> nama Modul Anda> Sumber> Tingkat Bahasa> pilih yang Anda butuhkan.

masukkan deskripsi gambar di sini

Ubah tingkat Bahasa dari sini: -

masukkan deskripsi gambar di sini

Ajay Kumar
sumber
1
Terima kasih banyak atas ini. Tidak tahu mengapa ini tidak standar. Bahkan pada 2019.1.3 yang saya gunakan.
eodeluga
33

Sebenarnya, jika Anda menggunakan Maven dan pom.xmlproperti proyek Anda dikonfigurasi dengan benar

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

Anda dapat mengimpor kembali parameter Maven ke intellij-ideaproyek - klik kanan pada entri root proyek, lalu Maven -> Reimportyang di bagian bawah.

gambar menunjukkan bahwa Maven adalah item kedua dari item terakhir dalam proyek klik kanan proyek

Boris Treukhov
sumber
25

Saya baru saja memperbaikinya sebagai berikut:

Klik kanan proyek -> Buka Pengaturan Modul -> Modul -> Sumber -> 8 atau lebih tinggi

masukkan deskripsi gambar di sini

Lalu

masukkan deskripsi gambar di sini

Jika masih menemukan kesalahan dan menggunakan maven , Anda harus menambahkan konfigurasi build di 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>
Dengarkan
sumber
4

File> Pengaturan> Bangun, Eksekusi, Deployment> Java Compiler

Ubah versi bytecode Target menjadi 1,8 dari modul tempat Anda bekerja.

Jika Anda menggunakan Maven

Tambahkan plugin kompiler ke pom.xml di bawah simpul proyek tingkat atas:

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

Jika Anda menggunakan Gradle, jangan lupa untuk memastikan yang berikut ini diatur ke 1,8 dan bukan 1,5 (misalnya untuk beberapa alasan aneh di Intelij defaultnya ke 1,5) jadi apa pun yang Anda lakukan di tingkat proyek untuk mengatur kompilator tingkat kompatibilitas, pengaturan ini akan menyebabkannya terus memberi Anda masalah dengan fitur Java 8 yang tidak akan dikenali:

version '1.0-SNAPSHOT'

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

sourceCompatibility = 1.8
Beezer
sumber
1

Mungkin konfigurasi repositori Anda memiliki properti include Versi kompiler. periksa 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>
刘泽森
sumber
1

Ada satu tempat lain yang mungkin menyebabkan masalah ini, terlepas dari apakah Anda menggunakan Maven atau Gradle atau tidak.

Dalam Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level, default (saya percaya) diatur ke Respecting to project language level settings, tetapi dapat diatur ke Higher than:, yang mengabaikan pengaturan proyek.

Berarti bahwa jika Anda mengikuti instruksi di jawaban lain dan mengatur tingkat bahasa proyek Anda menjadi, katakanlah, 8, tetapi inspeksi diatur ke Higher than: 7, IDEA masih akan melempar kecocokan.

Cody S
sumber