1 问题描述
调用Java8的Stream API,进行maven编译时,报错如下:
[INFO] -------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project Java8SerialLearning: Compilation failure
[ERROR] /home/gaoziqiang/eclipseWorkspace_project/Java8SerialLearning/src/main/java/cn/edu/sdut/softlab/Java8/Stream/ForEachDemo.java:[8,36] -source 1.5 中不支持 lambda 表达式
另外,我的Java配置如下:
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
2 问题原因
maven compiler插件默认的-source和-target参数都是1.5的,即:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
而这里需要的应该是1.8版本的。
3 问题解决
修改默认的maven插件的1.5版本,改为1.8即可了。如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>