Java 8 Eclipse Luna 4.4 GWT 2.8错误:lambda表达式仅在源级别1.8或更高



我在我的GWT对话框中有一个带有计时器的调整大小处理程序,该操作员将框中的框中的盒子中心。它使用lambda函数:

public class MyBox extends DialogBox {
private HandlerRegistration resizeHandler = null;
private static final int TIME_GAP = 500;
private Timer resizeTimer = new Timer() {
    @Override public void run() {
        center();
    }
};
@Override
protected void onLoad() {
    addResizeListener();
}
@Override
protected void onUnload() {
    resizeTimer.cancel();
    resizeHandler.removeHandler();
}
private void addResizeListener() {
    this.resizeHandler = Window.addResizeHandler(
            (ResizeEvent event)->{resizeTimer.schedule(TIME_GAP);});
}

}

当我编译时,我会得到:

[ERROR] Line 117: Lambda expressions are allowed only at source level 1.8 or above
     [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly

我有Eclipse Luna 4.4.2 Build 20150219-0600,应该在Java 8的盒子中使用。这是我尝试的:

  • 安装开普勒补丁
  • 检查的首选项 -> Java->编译器= 1.8 for Project和Eclipse Env
  • 检查我的Java->构建路径 ->类路径-JRE libs是1.8.0_162
  • 检查安装详细信息 ->配置 - 一切都有JDK.1.8
  • 已检查已安装的JRE -Java SE 1.8.0_162
  • 检查$ java_home指向jdk1.8.0_162.jdk

仍然给我错误。有什么想法吗?非常感谢!

错误在这里:

private void addResizeListener() {
this.resizeHandler = Window.addResizeHandler((ResizeEvent event)->
         {resizeTimer.schedule(TIME_GAP);});}

通常,它应该用红色突出显示,根本不允许编译。但是,它以某种方式设法忽略了它并开始编译。lambda函数的正确形式是:

private void addResizeListener() {
        this.resizeHandler = Window.addResizeHandler(event -> 
        {resizeTimer.schedule(TIME_GAP);});}

从最后几点丢弃所有最新更改和git pull解决了情况。我不明白为什么它以前没有用红色突出显示。

最新更新