Intellij - Daha yeni Java 8 sınıfları kullanılamıyor - Hata: “Since 1.6+ olarak belgelenen API kullanımı ..”


168

Bir java.lang.function.Functionjava 8 kod tabanı kullanmaya çalışıyorum , ancak Intellij aşağıdaki hatayı almaya devam.

Since 1.6+ olarak belgelenen API kullanımı Bu inceleme, kendi belgelerinde since etiketi bulunan yöntemlerin tüm kullanımlarını bulur. Bu, geliştirme, üretim için hedef platform olarak daha yeni SDK sürümü altında gerçekleştirildiğinde faydalı olabilir

Doğru Proje ve Derleyici ayarlarım var gibi görünüyor

Proje Ayarları: (Dosya -> Proje Yapısı)

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

Derleyici Ayarları: (Dosya -> Ayarlar)

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

Sorun nedir?

Yanıtlar:


365

Cevabı Bastien Jansen yorumuna dayanarak düzenledi.

Derleyici düzeyini etkileyen başka bir proje ayarı olduğu anlaşılıyor. Bu sorunun ince bir göstergesi, derleyicinizin, kodu derlerken kaynak ve hedef java sürümünün belirttiğinizden farklı olduğundan şikayet etmeye başlamasıdır.

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.

Bundan kurtulmak için açmanız gerekir

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

ve bunu istediğiniz düzeye, yani 1.8 veya Project Default dil seviyesine değiştirin


6
Proje ayarlarında, her modülü Project defaultdil seviyesini kullanacak şekilde yapılandırmanız gerekir ( Sourcessekmede).
Bastien Jansen

@BastienJansen teşekkürler. Cevabı yorumlarınıza göre düzenlediniz!
Nerrve

7
Project SettingsbulunurFile -> Project Structure
Karl

6
Bunun neden bu kadar çok yerde ayarlanması gerektiğimin ötesinde. Teşekkürler.
Richard Rast

1
Maven kullanıyorsanız yeniden içe aktarma yaptığınızda bu proje ayarının üzerine yazılır. Bu pompayı her değiştirdiğinizde olur ve intellij ayarlarınızı güncel tutmak zorunda kalmazsınız. Maven projeleri için aşağıdaki pom değişiklikleri daha uygundur.
Jay

51

Maven kullanıyorsanız yapılandırma pom.xml dosyanızda aşağıdaki satırı ekleyin ve ardından maven'den yeniden içe aktarın veya oluşturun.

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

Aşağıdaki yoldan başka seçim java derleyici ve Dil Seviyesi.

Dosya> Proje Yapısı> Proje Ayarları> Modüller> Modül adınız> Kaynaklar> Dil Seviyesi> ihtiyacınız olanı seçin.

resim açıklamasını buraya girin

Dil seviyesini buradan değiştirin: -

resim açıklamasını buraya girin


1
Bunun için çok teşekkür ederim. Bunun neden varsayılan olmadığını bilmiyorum. 2019'da bile kullanıyorum.
eodeluga

33

Aslında, Maven kullanıyorsanız ve pom.xmlproje özellikleriniz doğru yapılandırılmışsa

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

Maven parametrelerini projektöre yeniden içe aktarabilirsiniz intellij-idea- proje kök girişine sağ tıklayın, daha sonra Maven -> Reimportalttadır.

Resim Maven'in proje sağ tıklama menüsündeki son öğeden ikinci olduğunu gösteriyor


25

Ben sadece aşağıdaki gibi sabit:

Projeye sağ tıklayın -> Modül Ayarlarını Aç -> Modüller -> Kaynaklar -> 8 veya üstü

resim açıklamasını buraya girin

Ve sonra

resim açıklamasını buraya girin

Hala hatayla karşılaşırsanız ve maven kullanıyorsanız , derleme yapılandırmasını aşağıdakilere eklemeniz gerekir 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

Dosya> Ayarlar> Derleme, Yürütme, Dağıtım> Java Derleyici

Hedef bayt kodu sürümünü çalıştığınız modülün 1.8'i olarak değiştirin.

Maven kullanıyorsanız

Derleyici eklentisini üst düzey proje düğümü altındaki pom.xml dosyasına ekleyin:

<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

Gradle kullanıyorsanız, aşağıdakileri 1.5 olarak değil 1.8 olarak ayarladığınızdan emin olun (örneğin Intelij'deki tuhaf bir nedenden ötürü varsayılan olarak 1.5'dir), bu nedenle derleyiciyi ayarlamak için proje düzeyinde ne yaparsanız yapın uyumluluk düzeyi, bu ayar, tanımadığı Java 8 özellikleriyle sorun yaşamaya devam etmesine neden olur:

version '1.0-SNAPSHOT'

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

sourceCompatibility = 1.8

1

Belki de deponuzun yapılandırması derleyici Sürümü gibi özelliklere sahiptir. settings.xmldosyayı incele .

<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

Maven veya Gradle kullanıyor olsanız da olmasanız da, bu soruna neden olabilecek başka bir yer daha var.

Olarak Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level, varsayılan (inanıyorum) olarak ayarlanır Respecting to project language level settings, ancak olabilir ayarlanmalıdırHigher than: yoksaydıklarınız ayarlarını proje, hangi.

Diğer cevaplardaki talimatları uygular ve projenizin dil seviyesini örneğin 8 olarak ayarlarsanız, ancak denetleme olarak ayarlanırsa Higher than: 7, IDEA yine de uygun olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.