Intellij idea IntelliJ:计算lambda表达式在调试中引发编译错误
我想使用Intellij“评估代码片段”功能评估包含lambda表达式的代码。但是,Intellij会引发一个错误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()
,无法为目标级别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