使用lambda表达式编译代码时出错

时间:2015-10-26 09:49:39

标签: java maven lambda java-8

我有以下代码:

package com.mongoDB;

import spark.Spark;

public class HelloWorldSparkStyle {
   public static void main(String[] args) {
       Spark.get("/hello", (req, res) -> "Hello World");
   }
}

当我通过main方法运行它时运行正常,但在我尝试编译时抛出以下错误:

\HelloWorldSparkStyle.java:[9,33] error: lambda expressions are not supported in -source 1.5

D:\WorkspaceWithJava8\BeginnerProject>javac -version
javac 1.8.0_60

我正在使用Eclipse IDE并尝试通过命令行编译它。

2 个答案:

答案 0 :(得分:6)

默认情况下,maven-compiler-plugin使用Java 5来编译类。引用its documentation

  

另请注意,目前默认的源设置为1.5,默认目标设置为1.5,与您运行Maven的JDK无关。如果要更改这些默认值,则应按照设置Java编译器的-source和-target中的描述设置源和目标。

您需要将其配置为使用Java 8,如下所示:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
</plugin>

答案 1 :(得分:1)

让我进一步阐述上述答案。将上面答案中给出的插件放​​在<project></project>之间,如下所示。

<build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>
</build>