原文鏈接:http://blog.csdn.net/kai161/article/details/50379418
在用maven編譯項目是由於項目中用了jdk 1.8, 編譯是報錯 -source 1.5 中不支持 lambda 表達式,Google找到這篇解決方案,記錄一下:
編譯時報如下錯誤:
[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] AAA\.jenkins\workspace\BBB\CCC.java:[73,46] 錯誤: -source 1.5 中不支持 diamond 運算符 [ERROR] (請使用 -source 7 或更高版本以啟用 diamond 運算符) [ERROR] AAA\.jenkins\workspace\BBB\DDD.java:[38,33] 錯誤: -source 1.5 中不支持 lambda 表達式 [ERROR] (請使用 -source 8 或更高版本以啟用 lambda 表達式)
奇怪的是我的 Jenkins 構建機器上只安裝了 JDK 8,為什么還會說不支持 diamond 和 lambda 呢?在 Google 大神的指引下,在 Maven Compiler 插件介紹 里面找到了答案:Also note that at present the default source setting is 1.5 and the default target setting is 1.5, independently of the JDK you run Maven with.
原來 Maven Compiler 插件默認會加 -source 1.5 及 -target 1.5 參數來編譯(估計是為了兼容一些比較老的 Linux 服務器操作系統,它們通常只有 JDK 5),而我們的代碼里使用了 JDK 7/8 的語法。解決辦法在這里:
<project> [...] <build> [...] <plugins> <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> </plugins> [...] </build> [...] </project>
轉載地址:http://ju.outofmemory.cn/entry/155158
