私は私の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
何が問題ですか?
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またはプロジェクトデフォルト言語レベルに変更する。
もしあなたが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コンパイラーと言語レベルを選択します。
ファイル>プロジェクト構造>プロジェクト設定>モジュール>モジュール名>ソース>言語レベル>必要なものを選択してください。
ここから言語レベルを変更します -
実際に、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
をクリックします。
以下のように修正しました。
プロジェクトを右クリックして - > Open Module Settings - > Modules - > Sources - > 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>
ファイル>設定>ビルド、実行、配置> 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>
たぶんあなたのリポジトリの設定はコンパイラバージョンを含むプロパティを持っています。 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>
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は当てはまります。
Gradleを使用している場合は、次の項目が1.5ではなく1.8に設定されていることを忘れないでください(たとえば、Intelijの奇妙な理由でデフォルトは1.5です)。互換性レベル、この設定はそれを認識しないだろうJava 8の機能に関する問題をあなたに与え続けさせます:
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
apply plugin: 'Java'
sourceCompatibility = 1.8