Lambda-Ausdrücke funktionieren in Java 8 nicht?

Ich habe eine virtuelle Maschine, auf der Windows XP SP3 32-Bit ausgeführt wird. Auf diesem Computer habe ich Java SE JDK 8 Build 44 Developer Preview von installiertHier.

Ich habe auch das JavaFX 2.1 SDK installiert.

Es funktioniert gut:

java -version
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b44)
> Java HotSpot(TM) Client VM (build 24.0-b14, mixed mode, sharing)

Ich habe versucht, das folgende Programm auszuführen (entnommen ausHier):

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBase;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleButtonBuilder;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class LambdasWithJavaFx extends Application
{
    public static void main(String[] args)
    {
        Application.launch(args);
    }

    @Override  public void start(Stage stage) throws Exception
    {
        BorderPane root = new BorderPane();
        ToggleButton button = new ToggleButton("Click");
        final StringProperty btnText = button.textProperty();

        button.setOnAction(new EventHandler<ActionEvent>()
        {
            @Override public void handle(ActionEvent actionEvent)
            {
                ToggleButton source = (ToggleButton) actionEvent.getSource();
                if (source.isSelected())
                {
                    btnText.set("Clicked!");
                }
                else
                {
                    btnText.set("Click!");
                }
            }
        });

        root.setCenter(button);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }
}

Das Programm wurde wie erwartet kompiliert und ausgeführt.

Ich habe die Anweisungen in diesem Artikel befolgt und den Code für die Ereignisbehandlung für die Schaltfläche durch folgenden Code ersetzt:

button.setOnAction((ActionEvent event)->
{
    ToggleButton source = (ToggleButton) event.getSource();
    if (source.isSelected())
    {
        btnText.set("Clicked!");
    }
    else
    {
        btnText.set("Click!");
    }
});

Beim Kompilieren erhalte ich folgende Fehlermeldung (in der Zeilebutton.setOnAction((ActionEvent event)->):

> lambda expressions are not supported in -source 1.8
> (use -source 8 or higher to enable lambda expressions)

Ich habe das Argument hinzugefügt-source 8, Nichts hat sich verändert.

Ich wollte nur die Funktionalität der Lambda-Ausdrücke in Java 8 überprüfen. Warum funktioniert das nicht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage