Java 8 Eclipse Luna 4.4 GWT 2.8 Error: Lambda expressions are allowed only at source level 1.8 or above
Java 8 Eclipse Luna 4.4 GWT 2.8 Error: Lambda expressions are allowed only at source level 1.8 or above
我的 GWT 对话框中有一个带计时器的调整大小处理程序,它使框在浏览器中居中 window。它使用 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->项目和 Eclipse 环境的编译器 = 1.8
- 检查了我的 Java->构建路径->Class 路径 -- JRE 库是 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
解决了这个问题。不明白为什么之前没有用红色高亮
我的 GWT 对话框中有一个带计时器的调整大小处理程序,它使框在浏览器中居中 window。它使用 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->项目和 Eclipse 环境的编译器 = 1.8
- 检查了我的 Java->构建路径->Class 路径 -- JRE 库是 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
解决了这个问题。不明白为什么之前没有用红色高亮