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

use*_*802 197 eclipse m2eclipse maven

我在Eclipse Helios Version下创建了一个New Dynamic Project,我的JRE Version设置为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)
Run Code Online (Sandbox Code Playgroud)

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

TK *_*nov 392

如果您的项目不是Maven项目,请右键单击项目,然后选择"属性"以打开"项目属性"对话框.

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

项目工具 -  Java版本

  • Project Facet-> Java应该匹配maven-compiler-plugin工件源和目标的pom.xml中的所有内容. (17认同)
  • 必须匹配四件事1)Project-> Java Build Path-> Libraries-> JRE version 2)Project-> Java Compiler-> Compiler Compliance Level 3)Project-> Project Facets-> Java-> Version 4)(如果使用Maven) )pom.xml - maven-compiler-plugin工件源和目标 (7认同)
  • 这个问题的根本原因应该是@VineetReynolds提供的答案 (4认同)
  • 我有这个问题,听起来这是一个maven问题,但我不使用maven,我没有POM文件,我甚至不确定我有maven插件.但我得到同样的错误; 我的eclipse设置为使用java 1.7,但我的项目的facet页面只允许我选择1.6.我究竟做错了什么? (4认同)

Vin*_*lds 164

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

<build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

或者,您可以指定值为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>
Run Code Online (Sandbox Code Playgroud)

  • 你可以这样做: - 右键单击​​你的项目 - 单击属性 - 单击左侧菜单中的"项目构面"选项 - 在右侧的"构面"部分"Java"下,将其更改为"1.6","1.7"或您的版本... - 单击确定 (56认同)
  • @ThiagoPereira当您在其他工作区中重新导入时,您将丢失这些更改.了解m2e的工作原理. (3认同)

Nes*_*iza 16

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


cmg*_*ris 13

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

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

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


Der*_*ick 6

我通过在项目属性的Project Facet属性中设置java版本来解决此问题,右键单击项目根文件夹 - >属性,搜索Project Facets,然后选择兼容的Java版本.

以供参考 -

在此输入图像描述


Dhe*_*raj 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"
Run Code Online (Sandbox Code Playgroud)

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


Ris*_*hak 5

我通过Myproject解决了它---> java资源 ----> - > J RE系统库[java-1.6]点击这个转到它的" 属性 "选择"Classpath Container"执行环境改为java- 1.8(jdk1.8.0-35)(最新)

将jdk更改为最新