我试图运行这个例子:
package com.mycompany.app;
import static spark.Spark.*;
/**
* Hello world!
*
*/
public class App {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
mvn package
但是我收到了这个错误:
[错误]无法执行目标 org.apache.maven.plugins:Maven的编译器插件:3.1:编译 项目my-app上的(default-compile):编译失败:编译 失败:[错误] /Users/riccardo.tacconi/riccardo/java/spark/my-app/src/main/java/com/mycompany/app/App.java:[11,27] ')'预期[错误] /Users/riccardo.tacconi/riccardo/java/spark/my-app/src/main/java/com/mycompany/app/App.java:[11,35] 非法表达[错误] /Users/riccardo.tacconi/riccardo/java/spark/my-app/src/main/java/com/mycompany/app/App.java:[11,50] &#39 ;;'预期[错误] - > [帮助1]
错误:
App.java:[11,27] ')' expected
指的是req和。之间的(req,res)。
错误:
App.java:[11,35]
指 - >运营商。在我看来,这一行:
get("/hello", (req, res) -> "Hello World");
它不是有效的Java语法。我想知道Maven是否正在使用另一个Java版本(较旧的版本?)进行编译。这是我安装的版本:
» java -version riccardo.tacconi@RTACCONI-01
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
那是pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
</project>
答案 0 :(得分:4)
该行
get("/hello", (req, res) -> "Hello World");
是使用Lambda的有效Java 8语法。
您应确保将Maven pom.xml
配置为针对Java 8进行编译,而不是针对Java 7或更早版本进行编译。将此设置用于Maven Compiler Plugin。
<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>
此插件的网站describes your problem:
另请注意,目前默认的源设置为1.5,默认目标设置为1.5,与运行Maven的JDK无关