无法在Netbeans 7.1.1 + JDK8(jdk-8-ea-bin-b35)中编译lambda

时间:2012-04-26 11:23:25

标签: netbeans-7 java-8

  

可能重复:
  Lambda expressions don't work in Java 8?

简单,毫无意义的应用程序与lambda:

  

public static void main(String [] args){           FileFilter java =(File f) - > f.getName()的endsWith。( “Java的。”);       }

将其设置为使用JDK 8.如果我不尝试使用lambda,则编译/运行正常。

但是,如果我这样做,我会得到:

  

将1个源文件编译为... \ JavaApplication1 \ build \ classes   ... JavaApplication1的\ src \ javaapplication1 \ JavaApplication1.java:20:   错误:-source 1.8不支持lambda表达式           FileFilter java =(File f) - > f.getName()的endsWith。( “Java的。”); (使用-source 8或更高版本来启用lambda表达式)1错误

似乎对它是源8还是源1.8感到困惑


现在使用lambda特定版本时可以使用,例如运行正常:

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

public class JavaApplication1 {

    public static void main(String[] args) {
        Arrays.asList(new File("c:/").listFiles((File f) -> f.getName().endsWith(".txt")))
        .forEach( file-> {System.out.println(file);});
    }
}

2 个答案:

答案 0 :(得分:5)

为了编译lambda表达式,您需要从http://jdk8.java.net/lambda/下载jdk的版本。您还将在包含lambda表达式的行上获得红色波形,但它将编译并运行得很好,所以只需忽略它们:)

答案 1 :(得分:2)

Download the lambda binary然后将这个旧的jdk8替换为支持二进制文件的新jdk8。

然后它应该工作。