我有以下代码:
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,并尝试通过命令行进行编译。
默认情况下,maven-compiler-plugin
使用Java
5来编译类。引用其文档:
还要注意,当前的默认源设置是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>
我现在正在学习如何使用lambda表达式,我已经看到了一些带有简单示例的教程: 但是我的编译器显示这个错误: 我是不是忘了什么?
我正在使用NetBeans 8。当我的代码包含Lambda表达式并尝试编译时,我会收到以下错误消息:
问题内容: 我正在使用NetBeans8。当我的代码包含Lambda表达式并尝试编译时,出现以下错误消息: 问题答案: 将源代码的编译器版本更改为jdk 8的项目属性,然后首先检查是否已安装。
问题内容: 考虑以下Java 8代码段。 什么是越来越编译? 我知道Lambda并没有实现为匿名内部类。但是,因此接口必须在生成某种对象,但是尚不清楚在生成哪种对象。 Java 8中是否存在某种表示lambda表达式的新型对象? 更新 这是经过反编译的程序,该程序已使用eclipse java 8编译器编译,当您打开类文件时,以下输出来自eclipse。 看起来lambda表达式已变成包含lamb
我使用的是MSVS c 17,下面的代码无法编译: 在函数“makeIndices”中,我标记了出现错误的地方。它看起来像: 错误C2131:表达式未计算为常量 注意:失败是由于在变量的生命周期之外读取了变量导致的 注:参见“pred”的用法 注意:请参阅对函数模板实例化“auto makeIndices”的引用 上面的代码在GCC(Link)中编译并正常工作。 但是如何为MSVS修复它呢?
我试图创建一个使用Java的lambda表达式的示例,我使用的是官方的JDK8。我的例子运行成功。但是当我试图检查编译器如何将lambda表达式翻译成字节代码时,这让我有些困惑。下面是我的示例的代码:- 在本文中,他们讨论了编译器如何将lambda表达式转换为字节码。根据本文将lambda表达式转换为方法以及lambda表达式声明的位置,有lambda方法的引用。下面的例子在文章中: 我的例子运行