IntelliJ:求值lambda表达式在调试时引发编译错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IntelliJ:求值lambda表达式在调试时引发编译错误相关的知识,希望对你有一定的参考价值。
我想用Intellij'评估代码片段'功能评估包括lambda表达式的代码。但随后,Intellij引发了一个错误Unable to compile for target level 1.8. Need to run IDEA on java version at least 1.8, currently running on 1.6.0_65-b14-462-11M4609
评估代码非常简单,如下所示。
Set<Integer> set = new HashSet<>();
set.add(1);
set.stream().map(v->v).collect(Collectors.toSet());
我的Intellij版本是14.0.3,根据official document,版本14支持lambda表达式评估。
该功能如何可用?
即使在IntelliJ和Eclipse上应用了上面定义的项目特定设置之后,它仍然失败了!
对我来说有用的是添加带有源和目标的maven插件以及POM XML中的1.8设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.abc.sparkcore.JavaWordCount</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
汇总来自adrian lange和Bohuslav Burghardt的评论,要么升级到Java 1.8捆绑的最新IntelliJ 14.1,要么将当前的IntelliJ切换为使用Java 1.8。见bug IDEA-132099。
要切换到Java 1.8:
- 安装Java 8
- 将IntelliJ更改为使用Java 8.请参阅these instructions.
Unable to compile for target level 1.8...Currently running on version 1.6
我的猜测是你的项目是在不支持lambdas的Java版本上运行的。确保安装了Java 8,并确保将项目级别更改为使用Java 8,如下所示:请注意,它明确提到了lambdas
您可以切换JDK的运行时版本:
- 启动IDE,帮助|找到操作(在Mac上按Ctrl + Shift + A或Cmd + Shift + A),键入“Switch IDE Boot JDK”,按Enter键。
- 启动IDE,使用Help |找到操作(在Mac上按Ctrl + Shift + A或Cmd + Shift + A),键入“Switch IDE Boot JDK”,按Enter键。出现“切换IDE启动JDK”对话框。从下拉列表中选择版本,或单击“...”条目以指定自定义位置。
以上是关于IntelliJ:求值lambda表达式在调试时引发编译错误的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ Idea中使用Java8新特性lambda表达式
带有 Android SDK 的 intellij:-source 1.7 中不支持 lambda 表达式