Intellij-新しいJava 8クラスを使用できない-エラー:「APIの使用方法が@since 1.6以降として文書化されています。」


168

java.lang.function.FunctionJava 8コードベースでを使用しようとしていますが、Intellijで次のエラーが発生します。

@since 1.6+として文書化されたAPIの使用法この検査では、ドキュメントに@sinceタグが含まれるメソッドのすべての使用法が検出されます。これは、本番用のターゲットプラットフォームとして新しいSDKバージョンで開発を実行する場合に役立ちます。

プロジェクトとコンパイラの設定が正しいようです

プロジェクト設定:(ファイル->プロジェクト構造)

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

コンパイラ設定:(ファイル->設定)

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

何が問題ですか?

回答:


365

Bastien Jansenのコメントに基づいて回答を編集しました。

コンパイラレベルに影響を与える別のプロジェクト設定があるようです。この問題の微妙な兆候は、コードのコンパイル中に指定したバージョンと異なるソースおよびターゲットのJavaバージョンについてコンパイラが不平を言い始めたときです。

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.

これを取り除くには、開く必要があります

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

そしてそれを希望のレベル、すなわち1.8またはプロジェクトのデフォルト言語レベルに変更します


6
プロジェクト設定で、Project default言語レベル(Sourcesタブ内)を使用するように各モジュールを構成する必要があります。
Bastien Jansen

@BastienJansenありがとう。あなたのコメントに基づいて回答を編集しました!
Nerrve 2016年

7
Project SettingsにあるFile -> Project Structure
Karl

6
なぜこれが非常に多くの場所で設定される必要があるのか​​は私を超えています。ありがとう。
Richard Rast

1
このプロジェクト設定は、Mavenを使用している場合に再インポートすると上書きされます。これは、pomを変更するたびに発生し、intellij設定を最新に保つ必要があることにすぐに不満を感じます。Mavenプロジェクトの場合、以下のpomの変更がより適切です。
ジェイ

51

mavenを使用している場合は、設定pom.xmlファイルに以下の行を追加してから、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>

または、パスの下からJavaコンパイラと言語レベルを選択します。

ファイル>プロジェクト構造>プロジェクト設定>モジュール>モジュール名>ソース>言語レベル>必要なものを選択します。

ここに画像の説明を入力してください

ここから言語レベルを変更します:-

ここに画像の説明を入力してください


1
本当にありがとうございました。これがデフォルトではない理由がわかりません。2019.1.3でも使っています。
eodeluga

33

実際、Mavenを使用していて、pom.xmlプロジェクトプロパティが正しく構成されている場合

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

Mavenパラメータをintellij-ideaプロジェクトに再インポートできます。プロジェクトルートエントリを右クリックするMaven -> Reimportと、下部にあります。

画像は、Mavenがプロジェクトの右クリックメニューの最後の項目から2番目であることを示しています


25

私はそれを次のように修正しました:

プロジェクトを右クリック->モジュール設定を開く->モジュール->ソース-> 8以上

ここに画像の説明を入力してください

その後

ここに画像の説明を入力してください

それでもエラーが発生し、mavenを使用している場合は、ビルド構成を以下に追加する必要があります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

ファイル>設定>ビルド、実行、配置> Javaコンパイラ

対象のバイトコードのバージョンを、作業しているモジュールの1.8に変更します。

Mavenを使用している場合

最上位のプロジェクトノードの下の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>


1

Gradleを使用している場合は、以下が1.5ではなく1.8に設定されていることを忘れないでください(たとえば、Intelijの奇妙な理由により、デフォルトは1.5です)。プロジェクトレベルでコンパイラーを設定する方法に関係なく互換性レベルでは、この設定により、認識されないJava 8機能で引き続き問題が発生します。

version '1.0-SNAPSHOT'

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

sourceCompatibility = 1.8

1

多分あなたのリポジトリの設定はコンパイラのバージョンを含むプロパティを持っています。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

MavenまたはGradleを使用しているかどうかに関係なく、この問題を引き起こしている可能性のある場所がもう1つあります。

ではSettings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level、デフォルト(私は信じます)はに設定されてRespecting to project language level settingsますHigher than:、プロジェクト設定を無視するように設定することできます。

他の回答の指示に従い、プロジェクトの言語レベルをたとえば8に設定してもHigher than: 7、検査がに設定されている場合、IDEAは適合をスローします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.