maven编译报错 -source 1.5 中不支持 lambda 表达式(转)

Posted guoDaXia的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven编译报错 -source 1.5 中不支持 lambda 表达式(转)相关的知识,希望对你有一定的参考价值。

原文链接: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

以上是关于maven编译报错 -source 1.5 中不支持 lambda 表达式(转)的主要内容,如果未能解决你的问题,请参考以下文章

解决maven update project 后项目jdk变成1.5的问题

java jdk 1.8如何向下兼容,有个时候写高版本的时候maven 在低版本中没法编译?

Error:java:错误:不支持发行版本 5 (默认1.5编译)Information:java: Errors occurred while compiling module ‘java_web_

maven编译项目报错了?

Maven 解决 下载项目 compiler 为1.5的问题

编译插件时:maven 报错