Eclipse – Java编译器级别与已安装的Java项目构面的版本不匹配

时间:2020-02-23 14:41:20  来源:igfitidea点击:

最近,我在Eclipse中导入了一个Maven项目,并更改了构建路径库以在Java 1.7上运行。
之后,Eclipse在项目中向我显示了错误,尽管在任何文件中均未显示任何错误。

Java编译器级别与已安装的Java项目构面的版本不匹配

报错信息
Java compiler level does not match the version of the installed Java project facet.

我还将项目编译器的合规性级别更改为1.7,但仍然没有出错。

Java编译器级别的修复与安装的Java项目构面的版本不匹配

经过一些研究并查看了项目属性,我能够解决此问题。
我要做的就是将Java Project Facet版本从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>

我将其修改为以下内容。

<?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文件中更改Library,但这并不容易,这取决于为Library配置的名称,例如在我的项目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>