【修正】 Eclipse – Javaのコンパイラーレベルが、インストールされているJavaプロジェクトファセットのバージョンと一致していません。
最近、私はEclipseにMavenプロジェクトをインポートし、ビルドパスのライブラリをJava 1.7で動作するように変更しました。その後、Eclipseはプロジェクト内でエラーを表示しましたが、どのファイルにもエラーは表示されませんでした。
インストールされたJavaプロジェクトの状態とJavaコンパイラのレベルが一致していません。
エラーの説明は、インストールされたJavaプロジェクトの目盛りのバージョンとJavaコンパイラのレベルが一致しないというものでした。また、プロジェクトのコンパイラ互換レベルも1.7に変更しましたが、エラーは解消されていませんでした。以下のスクリーンショットは、このエラーが表示された問題ビューを示しています。
インストールされているJavaプロジェクトのバージョンに、Javaコンパイラのレベルが合っていない場合の修正。
調査をした後、プロジェクトのプロパティを確認することで、この問題を修正することができました。やる必要があったのは、Javaプロジェクトのファセットバージョンを1.5から1.7に変更するだけでした。以下のスクリーンショットは、プロジェクトのプロパティウィンドウを示しており、そこでプロジェクトファセットのバージョンを設定することができます。個人的には、UIで何かを変更することは好きではありません。私はターミナルを通じて作業を行うことにより傾向があります。まあ、プロジェクトのファセットの設定を編集することで、これを行う方法があります。この設定は、プロジェクトのルートにある.settingsフォルダ内のorg.eclipse.wst.common.project.facet.core.xmlファイルで見つけることができます。このファイルの元の内容は以下の通りでした。
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.5"/>
</faceted-project>
以下に修正しました。 (I modified it to below.)
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.7"/>
</faceted-project>
プロジェクトをリフレッシュした後、エラーは消えました。
インストールされているJavaプロジェクトファセットのバージョンとJavaコンパイラレベルが一致しない場合のボーナスヒントです。
もしターミナルからコンパイラの互換レベルを変更したい場合は、org.eclipse.jdt.core.prefs ファイル内の以下のプロパティを編集する必要があります。
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.source=1.7
プロジェクトの.classpathファイルでもライブラリを変更することができますが、それは簡単ではなく、ライブラリに設定された名前に依存します。例えば、私のプロジェクトのclasspathファイルでは、JREのエントリは以下のようになっています。
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Home">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
この問題に直面している人の助けになることを願っています。プロジェクトのファセットに関してです。