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>