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

Posted

技术标签:

【中文标题】Java 编译器级别与安装的 Java 项目方面的版本不匹配【英文标题】:Java compiler level does not match the version of the installed Java project facet 【发布时间】:2011-12-04 15:23:54 【问题描述】:

我在 Eclipse Helios 版本下创建了一个新的动态项目,其中我的 JRE 版本设置为 1.6。 我已通过单击配置转换为 Maven 项目,将 Maven 功能添加到 Web 应用程序。

添加后,Eclipse Problems 视图中出现构建错误:

Java compiler level does not match the version of the installed Java project facet.
Unknown Faceted Project Problem (Java Version Mismatch)

请告诉我如何解决此错误(我希望我的 JRE 版本仅为 1.6)。

【问题讨论】:

Bigleftie 的回答非常适合我的非 Maven 项目。 eclipse 用户可以阅读此journaldev.com/3334/… "Faceted Project Problem (Java Version Mismatch)" error message的可能重复 【参考方案1】:

如果您的项目不是 Maven 项目,请右键单击您的项目并选择“属性”以打开“项目属性”对话框。

左侧有一个Project Facets项,选中它,在列表中查找Java facet,选择你要用于项目的版本并应用。

【讨论】:

Project Facet->Java 应该匹配 pom.xml 中的任何内容,用于 maven-compiler-plugin 工件源和目标。 这个问题的根本原因应该是@VineetReynolds提供的答案 我有这个问题,听起来好像是maven的问题,但是我没有使用maven,我没有POM文件,我什至不确定我有没有maven插入。然而我得到了同样的错误;我的 Eclipse 设置为使用 java 1.7,但我的项目的方面页面只会让我选择 1.6。我做错了什么? 四件事必须匹配 1) Project->Java Build Path->Libraries->JRE version 2) Project->Java Compiler-> Compiler Compliance Level 3) Project->Project Facets->Java- >版本 4)(如果使用 Maven)pom.xml - maven-compiler-plugin 工件源和目标 我第二个@TK Gospodinov 的回答。我的 pom 是最新的 Java 版本,但项目方面是罪魁祸首。【参考方案2】:

假设您在 Eclipse 中使用 m2e 插件,您需要为 maven-compiler-plugin 指定 sourcetarget 版本为 1.6。 m2e 使用这些值来确定项目的 Java 编译器级别。 POM 的 sn-p 如下所示:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
    </plugin>
  </plugins>
</build>

或者,您可以指定值为 1.6 的 maven.compiler.sourcemaven.compiler.target 属性,这恰好是等效的:

<properties>
    <maven.compiler.target>1.6</maven.compiler.target>
    <maven.compiler.source>1.6</maven.compiler.source>
</properties>

【讨论】:

你能做到吗: - 右键单击​​您的项目 - 单击属性 - 单击左侧菜单上的“项目构面”选项 - 在构面部分右侧的“Java”下,将其更改为“ 1.6"、"1.7" 或您的版本... - 点击确定 @ThiagoPereira 当您在不同的工作区重新导入时,您会丢失这些更改。了解 m2e 的工作原理。 eclipse 用户可以阅读journaldev.com/3334/…【参考方案3】:

即使对于 maven 项目,TK Gospodinov 的回答也是正确的。当心:我确实使用 Maven。 pom是正确的,仍然有这个问题。我去了“Project Facets”,实际上删除了指向 1.6 的 Java 选择,但我的项目使用的是 1.7。在“运行时”选项卡的右侧,我必须检查 jdk1.7 选项。即使在我点击“应用”之后,左侧也没有出现任何内容。这个问题消失了,这就是为什么我仍然认为这个答案对于特定的“项目方面”相关问题很重要。如果您返回“Project Facets”,点击 OK 后,您会注意到 Java 显示为 1.7 版,因此您现在可以选择它以确保该项目被“标记”为 Java 项目。我还需要右键单击项目并选择 Maven|更新项目。

【讨论】:

【参考方案4】:

我通过在项目属性的Project Facet属性中设置java版本解决了这个问题,右键项目根文件夹->属性,搜索Project Facets,选择兼容的java版本。

供参考-

【讨论】:

【参考方案5】:

我把workspace/project/.setting/org.eclipse.wst.common.project.facet.core里面的配置改成:

installed facet="jst.web" version="2.5"
installed facet="jst.java" version="1.7"

在更改配置之前,从 IDE 中删除项目。 这对我有用。

【讨论】:

刚刚从 eclipse 中删除了项目并重新导入解决了这个问题。【参考方案6】:

我通过Myproject--->java Resource---->libraries-->JRE System解决了它Libraries[java-1.6]点击这个去它的“property”选择“Classpath Container”Execution Environment改成java-1.8(jdk1.8.0-35)(即最新

【讨论】:

【参考方案7】:

我发现上面@bigleftie 的评论很有帮助: "四件事必须匹配

    项目->Java 构建路径->库->JRE 版本 项目->Java 编译器-> 编译器合规级别 项目->项目方面->Java->版本 (如果使用 Maven)pom.xml - maven-compiler-plugin 工件源和目标”。

在我的情况下,在项目属性 Java 编译器中,JDK 合规性设置为使用工作区设置,这与项目的 Java 版本不同。我点击了“配置工作区设置”,并将工作区编译器合规级别更改为我想要的,问题就解决了。

【讨论】:

【参考方案8】:

Project Facet->Java 应该匹配 pom.xml 中用于 maven-compiler-plugin 工件源和目标的任何内容。这是完美的。但如果你没有它,那么你也可以通过匹配来修复它来自设置的 Porject-Facets 中的 Java 编译器版本:Eclispe->Preferences->Java->Compiler

【讨论】:

【参考方案9】:

您可以从 项目 --> 属性 --> 项目构面 --> Java --> 必需的 JDK 版本

【讨论】:

【参考方案10】:

右键单击项目并选择属性 单击左侧的java编译器并更改为您所需的版本 希望这会有所帮助

【讨论】:

【参考方案11】:

在 Eclipse 中,右键单击您的项目,转到 Maven> 更新 projetc。等待,错误将消失。这已经正确配置了该项目的 Java 版本。

【讨论】:

【参考方案12】:

如果使用eclipse,

在.settings下点击org.eclipse.wst.common.project.facet.core.xml

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <installed facet="java" version="1.7"/>
</faceted-project>

将版本更改为正确的版本。

【讨论】:

以上是关于Java 编译器级别与安装的 Java 项目方面的版本不匹配的主要内容,如果未能解决你的问题,请参考以下文章

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

java 编译器级别与项目版本不匹配

maven编译java项目问题(主要针对idea)——Error:java: 无效的目标发行版: 1.8

项目方面java 1.8版不存在

项目属性与 pom 中的 Java 版本

class 文件反编译器的 java 实现