我想用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:
您可以切换JDK的运行时版本: