【问题标题】:Java 8 Lambdas don't work, everything else from Java 8 works thoughJava 8 Lambda 不起作用,但 Java 8 中的所有其他东西都可以工作
【发布时间】:2014-03-20 20:12:51
【问题描述】:

我发现 Java 8 现在正式发布了。看来我需要 Eclipse Luna 4.4 才能工作。所以我下载了Luna并安装了它。我还从我的其他 Eclipse 导入了所有项目,一切都按预期工作。当我想尝试 Java 8 时,我很快发现我需要先安装它。安装后,我设法将 JRE 8 更改为默认值。

我的问题是:为什么我可以使用新的日期和时间 API,但我不能使用新的 Lambda 表达式?

一些可能有用的信息:

  • 我使用的是 Mac
  • 我非常确定时间 API 可以正常工作(即使是小型 Java Doc Box 也表示它是从 1.8 开始的)

这可能与我没有安装包含 Java 8 的 Eclipse 的事实有关吗?

【问题讨论】:

  • 将您的 JDK 合规级别设置为 8。
  • 你不需要使用 Luna - Kepler 有一个功能补丁可以正常工作。

标签: java eclipse lambda java-8


【解决方案1】:

首先,您不需要使用 Luna - 有一个 feature patch for Kepler 可以正常工作。

其次,Java 编译器对话框的“源代码兼容性”部分必须是 1.8。否则,即使您被允许使用 Java 1.8 的 library 功能,您也将无法使用 language 功能。 (不仅仅是 lambda - 例如,还有方法引用、接口中的静态方法和默认方法。)这里是看的地方:

您很少想要使用 1.8 中的库功能但保持源/类文件与 1.7 或更早版本的兼容性,但我想如果您正在编写需要的代码,它可能会很有用可以在各种 JRE 上运行,但您可能有一些需要 Java 1.8 的功能实现,而在早期的 JRE 上不会使用。

【讨论】:

  • 好的,谢谢,我没有意识到 Eclipse Luna 真的不应该被使用。
  • @Kametrixom:如果你愿意,你可以使用 Luna;它只是不是最新的发布 版本。有点像测试版,虽然可能没问题。
  • @JonSkeet 接口中的静态方法不是从 Java 8 中删除的吗?
  • 这对我有用。我花了一些时间研究我的 eclipse.ini 中提到的 jvm 是 1.8 。此处提到的 lambda 库无需下载:stackoverflow.com/questions/11176936/…
  • @BillK:我希望你有计划离开 FlashBuilder。被困在死胡同的工具链中会让你变得越来越糟糕......
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多