1. ホーム
  2. intellij-idea

[解決済み] Intellij - 新しいJava 8クラスが使用できない - エラー : "@since 1.6+ としてドキュメント化されたAPIの使用...".

2022-01-29 18:32:54

質問

を使おうとしているのですが java.lang.function.Function が、Intellijで次のようなエラーが発生します。

Usage of API as documented as @since 1.6+ この検査では、次のようなすべてのAPIが検出されます。 の使用は、そのドキュメントに @since タグを持つメソッドの使用です。 これは 新しいバージョンのSDKで開発を行う場合、その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またはプロジェクトのデフォルト言語レベルに変更します。