1. 程式人生 > >maven編譯報錯 -source 1.5 中不支援 lambda 表示式

maven編譯報錯 -source 1.5 中不支援 lambda 表示式

在用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 is1.5and the default

 target setting is1.5, independently of the JDK you run Mavenwith.

原來 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