Java项目面向的版本1.8不存在。

50

我正在尝试使用Java 8(如果相关,采用Wildfly应用程序服务器)在Eclipse中构建一个动态web应用程序,但是我无法让Eclipse Luna M5使用Java 8(我已经安装了Java 8 Beta支持并且它在JavaSE项目上可以工作)。

在我的POM文件中,我将级别设置为Java 8:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

但是在我执行 maven -> update project 后,我遇到了以下错误:

Could not update project ExampleApp configuration
Version 1.8 of project facet java does not exist.

事实上,在项目->首选项->项目结构->Java下,确实没有Java 1.8项目facet。

我能否手动创建这样的facet并将其添加到eclipse中,或者我必须等待Java 8发布以及eclipse开发人员决定添加它?


你看过这个了吗?它有帮助吗? - LaurentG
我已经从那里安装了早期访问的二进制文件(beta支持)。 - Svetlin Zarev
6个回答

73

官方为Kepler SR2提供了其他的补丁。

在Eclipse中,选择"帮助" --> "市场" --> 搜索Java 8 Kepler。

然后选择并安装以下内容:

  • 安装 Java 8 支持 Eclipse Kepler SR2
  • Web 工具 Java 8 Facets Eclipse Kepler SR2
  • 如果需要,安装 Eclipse Kepler SR2 的 M2E Java 8 支持。

参考资料:http://www.eclipse.org/downloads/java8/

这样做之后,我的多模块Maven项目在Eclipse Kepler SR2中使用Java 8编译时没有出现任何错误。

更新:如果您使用的是 Spring Tool Suite (STS),则版本3.5.1已经包含了这些功能。


这是适用于 STS 3.5.0 RELEASE 的正确答案,它具有对 Java8 的编译器支持,但不包括 Facets 或 m2e 支持。 - Marty Pitt
1
@Marty STS 3.5.1 已经包含了这些内容。 - Poorna Subhash

10

这在 STS 3.5.0.RC4 上可以工作,但在 STS 3.5.0 RELEASE 上不行。请改用 @Pooma 提供的方法。 - Marty Pitt
@MartyPitt 实际上是 Poorna。 - Hendy Irawan

4

虽然我们还在等待官方的Java 1.8支持,但我已经制作了一个Github分支,其中包含我认为所需的更改-这些需要先从此处获取Java 8补丁:https://wiki.eclipse.org/JDT_Core/Java8

要安装1.8面向对象支持(假设您正在运行4.3.1或4.3.2,并具有对主.../eclipse/plugins目录的写访问权限):

  • git clone https://github.com/stevestorey/webtools.common.fproj
  • git checkout java8-support
  • 将此功能集中的各个项目导入到Eclipse IDE中(可以在新工作区上)。特别是您需要org.eclipse.wst.common.project.facet.core和org.eclipse.wst.common.project.facet.core
  • 右键单击org.eclipse.jst.common.project.facet.core项目,选择“导出”,然后选择“Plug-in development\Deployable plugins and fragments”
  • 从导出对话框中,仅选择org.eclipse.jst.common.project.facet.core插件,并选择底部的“安装到主机”单选按钮,并选择适当的路径(我相信我使用了默认值,但我不认为这特别重要)
  • 单击完成将构建插件,然后启动安装到Eclipse环境中。

重新启动Eclipse后,您应该发现1.8现在可以作为Java面向对象选择:)(并且它也适用于启用M2E的指定源/目标为1.8的项目)。

请注意,标准1.8补丁说明中的指令是,在Eclipse属性中安装的JDK必须被称为“JavaSE-1.8”。

还要注意,如果/当您更新Eclipse(例如升级到4.3.2),则可能需要重新安装修补程序版本,因为更新将把“官方”插件版本放回去。


我在安装插件时遇到了"org.eclipse.jst.common.project.facet.core/build.xml:145: java.lang.ClassFormatError: Duplicate field name&signature in class file org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration"的错误提示 :( - user1547039
我更新了Eclipse,而且它对我来说运行正常。 - u_pendra
这是针对大约8年前的Eclipse版本的建议,所以是的,如果您升级,我希望它能够正常工作 :)0 - stevestorey

1

我几天前也遇到了完全相同的问题。看起来这将被包含在Eclipse Luna的下一个版本中。

项目面向Java版本1.8不存在

Eclipse Luna M6预计于3月14日发布,希望那时它能够被包含进去。


我正在使用Eclipse Luna 4.4.0 M6并遇到了同样的问题。因此,LUNA M6目前还没有解决方法。 - Martin Andersson

0
最近Java升级到Java 8,因此您需要更新到新的Eclipse才能正常工作。我之前运行的是Eclipse 4.3(Kepler),现在必须升级到Eclipse 4.4(Luna)。 “输入图像说明”src

0

前往您的项目属性,搜索项目方面并更改Java版本

enter image description here


2
我会给这个回答点个踩,因为它与问题无关。如果你已经看了问题,你应该知道这个问题与LUNA M5有关,而我已经尝试过了。另外,如果你不知道M5=Milestone 5,而Luna已经发布很久了,所以你的回答完全不合适。 - Svetlin Zarev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接