web-dev-qa-db-ja.com

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

私は私のJava 8コードベースでJava.lang.function.Functionを使おうとしています、しかし私は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

何が問題ですか?

155
Nerrve

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またはプロジェクトデフォルト言語レベルに変更する。

339
Nerrve

もしあなたが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コンパイラーと言語レベルを選択します。

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

enter image description here

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

enter image description here

43
Ajay

実際に、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をクリックします。

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

30
Boris Treukhov

以下のように修正しました。

プロジェクトを右クリックして - > Open Module Settings - > Modules - > Sources - > 8以上

enter image description here

その後

enter image description here

それでもエラーが発生し、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>
12
Hearen

ファイル>設定>ビルド、実行、配置> 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>
4
harun ugur

たぶんあなたのリポジトリの設定はコンパイラバージョンを含むプロパティを持っています。 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に設定されていますが、 can Higher than:に設定できます。これはプロジェクト設定を無視します。

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

1
Cody S

Gradleを使用している場合は、次の項目が1.5ではなく1.8に設定されていることを忘れないでください(たとえば、Intelijの奇妙な理由でデフォルトは1.5です)。互換性レベル、この設定はそれを認識しないだろうJava 8の機能に関する問題をあなたに与え続けさせます:

version '1.0-SNAPSHOT'

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

sourceCompatibility = 1.8
1
Beezer