“分面项目问题(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 -> Project Facets
面板? (来自that post)
一个 WTP 项目由多个功能单元(称为 面)。
Java facet 版本需要始终与 java 编译器合规性相匹配 水平。 更改 Java 级别的最佳方法是使用 Project Facets 属性面板,因为这将同时更新两个地方。
“
Project->Preferences->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 版本不匹配)”错误消息的主要内容,如果未能解决你的问题,请参考以下文章
Docker 撰写 ECS 错误:资源处理程序返回消息:“模型验证失败(#/Volumes:数组项不唯一)”