Intellij idea IntelliJ:计算lambda表达式在调试中引发编译错误

Intellij idea IntelliJ:计算lambda表达式在调试中引发编译错误,intellij-idea,lambda,Intellij Idea,Lambda,我想使用Intellij“评估代码片段”功能评估包含lambda表达式的代码。但是,Intellij会引发一个错误,无法为目标级别1.8编译。需要在java版本至少1.8上运行IDEA,目前在1.6.0_65-b14-462-11M4609上运行 评估代码非常简单,如下所示 Set<Integer> set = new HashSet<>(); set.add(1); set.stream().map(v->v).collect(Collectors.toSet()

我想使用Intellij“评估代码片段”功能评估包含lambda表达式的代码。但是,Intellij会引发一个错误
,无法为目标级别1.8编译。需要在java版本至少1.8上运行IDEA,目前在1.6.0_65-b14-462-11M4609上运行

评估代码非常简单,如下所示

Set<Integer> set = new HashSet<>();
set.add(1);
set.stream().map(v->v).collect(Collectors.toSet());
Set Set=newhashset();
增加(1);
set.stream().map(v->v.collect(Collectors.toSet());
我的Intellij版本是14.0.3,根据,版本14支持lambda表达式求值

该功能如何可用


将和的评论放在一起,要么升级到与Java 1.8捆绑在一起的最新IntelliJ 14.1,要么将当前IntelliJ转换为使用Java 1.8。见小虫

要切换到Java 1.8,请执行以下操作:

  • 安装
  • 将IntelliJ更改为使用Java8。看
  • 我猜您的项目是在不支持lambdas的Java版本上运行的。确保已安装Java 8,并确保将项目级别更改为使用Java 8,如下所示:
    请注意,它明确提到了lambdas

    ,即使在IntelliJ和Eclipse上应用了上述定义的特定于项目的设置,对我来说仍然失败

    对我有效的是添加了maven插件,其源代码和目标代码在POM XML中设置为1.8:

    
    org.apache.maven.plugins
    maven编译器插件
    2.0.2
    1.8
    1.8
    org.apache.maven.plugins
    maven jar插件
    真的
    解放党/
    com.abc.sparkcore.JavaWordCount
    org.apache.maven.plugins
    maven依赖插件
    复制
    安装
    复制依赖项
    ${project.build.directory}/lib
    
    您可以切换JDK的运行时版本:

  • 启动IDE,帮助|查找操作(Mac上的Ctrl+Shift+A或Cmd+Shift+A),键入“切换IDE引导JDK”,按Enter键
  • 启动IDE,使用帮助|查找操作(Mac上的Ctrl+Shift+A或Cmd+Shift+A),键入“切换IDE引导JDK”,按Enter键。 出现“切换IDE引导JDK”对话框。从下拉列表中选择版本,或单击“…”条目以指定自定义位置

  • 这似乎是一个bug:由IntelliJ在1.6(我猜是Apple JDK)上运行,但项目使用JDK1.8这一事实造成的。所以解决方案是让IntelliJ使用JDK1.8,但我上次听说它在Mac上有一些性能问题。然而,这可能已经被解决了……到目前为止,博胡斯拉夫的答案对我来说是有效的。为了改变JDK,我遵循了。在我的Mac电脑上,我将Info.plist更改为:
    JVM版本1.8*
    。看起来还好。现在可以在调试模式下执行lambdas了。如果您只需要用Java8编译项目,那么答案就足够好了。但要在watcher/evaluate表达式中使用Java8语法,我必须更新IDEA_JDK和IDEA_JDK_64以指向Java8(答案中提到的博客中也提到了这一点)。
    Unable to compile for target level 1.8...Currently running on version 1.6