为什么 GWT 在 Java 8 中编译失败?

Why does GWT fail compile in Java 8?

我正在使用 LibGDX 库编写一些东西(地图生成器),它能够使用 GWT 构建 HTML5 可部署文件。

但是,当我 运行 构建 Gradle 时,我收到此错误:

:html:compileGwt
Compiling module technology.rocketjump.undermount.mapgen.GdxDefinition
   Validating units:
     [ERROR] Errors in 'file:/D:/workspace/undermount-mapgen/core/src/main/java/technology/rocketjump/undermount/mapgen/generators/RiverGenerator.java'
     [ERROR] Line 61: RiverPathfindingCalculator cannot be resolved to a type
     [ERROR] Line 89: The left-hand side of an assignment must be a variable

错误似乎是在 RiverGenerator.java

中指示以下行
private boolean runRiver(GridPoint2 startPoint, GridPoint2 endPoint, GameMap map) {

    RiverPathfindingCalculator pathfinder = new RiverPathfindingCalculator(startPoint, endPoint, map);
    List<GridPoint2> path = pathfinder.findPath();

但是 RiverPathfindingCalculator 只是同一项目中的另一个 Java class。它似乎也在文件中正确导入,这里是 RiverGenerator

的导入
package technology.rocketjump.undermount.mapgen.generators;

import com.badlogic.gdx.math.GridPoint2;
import technology.rocketjump.undermount.mapgen.calculators.RiverPathfindingCalculator;
import technology.rocketjump.undermount.mapgen.model.TileType;
import technology.rocketjump.undermount.mapgen.model.output.*;

import java.util.*;

你可以view the relevant code on Github。关于我做错了什么或如何解决这个问题有什么想法吗?

GWT < 2.8 版不支持 java8 语法,因此没有 lambda 表达式。

将该 lambda 重写为 "normal" 比较器(大多数 IDE 都有自动重构),GWT 应该会很高兴。