“分面项目问题(Java 版本不匹配)”错误消息

Posted

技术标签:

【中文标题】“分面项目问题(Java 版本不匹配)”错误消息【英文标题】:"Faceted Project Problem (Java Version Mismatch)" error message 【发布时间】:2011-01-15 10:43:19 【问题描述】:

Eclipse 的“问题”选项卡显示此错误:

说明:Java 编译器级别与安装的 Java 项目方面的版本不匹配。 资源:分组 路径:[空白] 地点:未知 类型:分面项目问题(Java 版本不匹配)

我的pom.xml 有这个设置:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>
</plugins>

还有哪些设置不匹配?

【问题讨论】:

【参考方案1】:

您是否检查了您的Project Properties -&gt; Project Facets 面板? (来自that post)

一个 WTP 项目由多个功能单元(称为 面)。

Java facet 版本需要始终与 java 编译器合规性相匹配 水平。 更改 Java 级别的最佳方法是使用 Project Facets 属性面板,因为这将同时更新两个地方。

Project-&gt;Preferences-&gt;Project Facets”将其配置存储在“.settings”目录下的“org.eclipse.wst.common.project.facet.core.xml”文件中。

内容可能如下所示

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="WebSphere Application Server v6.1"/>
  <fixed facet="jst.java"/>
  <fixed facet="jst.web"/>
  <installed facet="jst.java" version="5.0"/>
  <installed facet="jst.web" version="2.4"/>
  <installed facet="jsf.ibm" version="7.0"/>
  <installed facet="jsf.base" version="7.0"/>
  <installed facet="web.jstl" version="1.1"/>
</faceted-project>

还要检查您的Java compliance level:

【讨论】:

非常感谢!它帮助了【参考方案2】:

您有两种方法可以解决此问题:

1- 手动确保两个版本匹配。 2- 使用 IDE 的帮助如下: - 右键单击​​“问题”视图中的错误 - 从弹出菜单中选择“快速修复”菜单项 - 在提供的对话框中选择正确的编译器级别,然后单击“完成”。

取自Eclipse: Java compiler level and project facet mismatch

还提供了可以访问 Java 编译器和构面版本的位置。

【讨论】:

【参考方案3】:

项目方面应该由 M2Eclipse 插件从 POM 配置自动派生。如果您对 POM 进行了一些更改并需要 Eclipse 将其考虑在内,请右键单击您的项目,然后转到 Maven > Update Project Configuration。您不应手动设置项目构面。

【讨论】:

@VonC 你当然是正确的手动配置它,但是当使用 maven 和 m2eclipse 插件时,插件应该 - 并且实际上 - 为你配置它。所有必需的元数据都在 POM 中:JDK 级别版本、Servlet API 等。开发人员不必在导入或任何其他 POM 更新后手动设置,这是一件好事。这也适用于 maven-eclipse-plugin(基于 POM 元数据生成构面)。 你写的时候可能是这样,但是 2011-05 的最新版本的 m2e 并没有像旧版本那样手动添加依赖项,所以你必须手动将项目转换为faceted 项目,然后手动编辑配置文件以将正确的 jar 复制到您的 lib 目录。这是一种痛苦。见sites.google.com/site/michaelvorburger/m2e-and-wtp【参考方案4】:

在 Spring STS 中,右键单击项目并选择“打开项目”,此设置在后台执行必要的操作并将项目带回工作空间。

感谢和问候 文加特马兰

【讨论】:

【参考方案5】:

我在 Java 1.6 上运行应用程序时遇到了这个问题,而我为不同的应用程序安装了 Java 6、7、8 的所有三个版本。我访问了 Navigator 视图并手动从 facet.core.xml 中删除了不需要的方面。干净的构建和wallah!

<?xml version="1.0" encoding="UTF-8"?>

<fixed facet="jst.java"/>

<fixed facet="jst.web"/>

<installed facet="jst.web" version="2.4"/>

<installed facet="jst.java" version="6.0"/>

<installed facet="jst.utility" version="1.0"/>

【讨论】:

已经有一个被接受的答案,它不仅得到了很高的评价,而且也解决了 OP 的问题。

以上是关于“分面项目问题(Java 版本不匹配)”错误消息的主要内容,如果未能解决你的问题,请参考以下文章

数组在选择随机项 C#/Unity 时不给出越界错误消息

Docker 撰写 ECS 错误:资源处理程序返回消息:“模型验证失败(#/Volumes:数组项不唯一)”

禁用 g++“注意候选项是..”编译器消息

错误检查php Android Studio中的重复项

YouTube V3 API 播放列表项 resourceIdRequired

无法从其他线程添加列表项