クラスパスの混乱: Eclipse を使用した Java 8 の LogManager での java.lang.reflect.AnnotatedElement エラー
Java 7u45 から Java 8u20 への移行中、開発者は、LogManager クラスを使用するときに、複雑なエラーに遭遇する可能性があります。プライベート静的 Logger log = LogManager.getLogger(Class1.class) の一見無害な宣言は、「タイプ java.lang.reflect.AnnotatedElement を解決できません。必要な .class ファイルから間接的に参照されています。」
というエラーをスローします。Eclipse はユーザーにビルド パスの構成を求めるプロンプトを表示しますが、ユーザーは問題の根本原因がわかりません。このエラーは、基礎となる Java 8 JDK バージョンの変更が原因で発生します。 JDK 8 とそのコンパイラーを使用する IDE (Eclipse など) を使用する場合、IDE を Java 8 をサポートするバージョンに更新することが重要です。
この要件は、コンパイラーがロードする必要があるという事実から生じます。 JRE から最新のクラス ファイルを取得して、これらのクラスを参照するソフトウェアをコンパイルします。古いコンパイラは更新されたクラス ファイルのバージョン番号を見逃すことがありますが、特定のタイプでは混乱する可能性があります。たとえば、AnnotatedElement にはデフォルトのメソッドが含まれるようになりましたが、Map.Entry は静的メソッドが追加されたインターフェイスです。
Eclipse のエラー メッセージ「«classname» を解決できません」は、クラス ファイルが解決されるケースを区別していません。見つからないものや、コンパイラーが読み取りで問題を検出したもの。 ECJ コンパイラーを統合するツールやフレームワークを利用する場合にも、同様の問題が発生する可能性があります。
以上がJava 8 が Eclipse の LogManager で「タイプ java.lang.reflect.AnnotatedElement を解決できません」というメッセージをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。