Не удается скомпилировать лямбду в Netbeans 7.1.1+JDK8 (jdk-8-ea-bin-b35)

Возможный дубликат:
лямбда-выражения не работаете с Java 8?

Простое бессмысленное приложение с лямбдой:

public static void main(String[] args) { FileFilter java = (File f) -> f.getName().endsWith(".java"); }

Настройте его на использование JDK 8. Компилируется/работает нормально, если я не пытаюсь использовать лямбду.

Однако, если я это сделаю, я получу:

Компиляция 1 исходного файла в ...\JavaApplication1\build\classes ...JavaApplication1\src\javaapplication1\JavaApplication1.java:20: ошибка: лямбда-выражения не поддерживаются в -source 1.8 FileFilter java = (File f) -> f .getName().endsWith(".java"); (используйте -source 8 или выше, чтобы включить лямбда-выражения) 1 ошибка

Кажется, смущен тем, должен ли это быть источник 8 или источник 1.8.


Теперь работает при использовании конкретной версии лямбды, например. ниже работает нормально:

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);});
    }
}

person Dino Fancellu    schedule 26.04.2012    source источник
comment
Почему это было закрыто? Дубликат, на который указывал, пришел после моего, а не раньше.   -  person Dino Fancellu    schedule 27.09.2012


Ответы (2)


Чтобы получить лямбда-выражения для компиляции, вам необходимо загрузить версию jdk с http://jdk8.java.net/lambda/. Вы также получите красные волнистые линии на строках, содержащих лямбда-выражение, но оно будет компилироваться и работать нормально, поэтому просто игнорируйте их :)

person Nikita Ignatov    schedule 26.04.2012
comment
Спасибо, проблема была именно в этом - person Dino Fancellu; 26.04.2012

Загрузите двоичный код лямбда, а затем замените старый jdk8 новым, который поддерживает двоичный код.

Тогда это должно работать.

person Shabnam    schedule 26.09.2012