为 Java 11 更新 Vaadin 项目的 GWT

Updating Vaadin project's GWT for Java 11

我无法使用 JDK 11.

的 vaadin 和 gwt 组件构建我的 maven 项目

我已经将 gwt-usergwt-dev 更新到最新(2.8.2) 版本。

我正在使用 Vaadin7,也尝试过使用 Vaadin8。尝试使用 vaadin-maven-plugin 进行编译。

我的 Maven 构建的输出:

[ERROR] Hint: Check that your module inherits 'com.google.gwt.core.Core' either directly or indirectly (most often by inheriting module 'com.google.gwt.user.User')

我看到了相关问题,但对我没有任何帮助。

这个堆栈可以与 Java 11 一起使用吗?最高可达 Java 8.

编辑: 要使用 JDK11 进行编译,您需要 gwt-user、gwt-dev 和 vaadin-maven-plugin 到 2.8.2。然后你需要将 Vaadin 升级到 Vaadin 8.9.1。

GWT 2.8 不工作JDK11,所以widgetset 编译不工作。你需要依赖 JDK 8.

将 GWT 依赖项更新到 2.8.2 是不够的。您还需要使用基于 GWT 2.8.2 的 vaadin-maven-plugin 版本。我不记得哪个版本号是第一个有效的版本号,但我个人在使用 Vaadin 8.0 时遇到过错误,而 Vaadin 8.8 对我来说一切正常。

如果您想设置您的 Vaadin 8 项目以在服务器端和客户端(即 GWT)代码中支持 Java11,您需要修补该项目以使用 GWT 2.9.0。

Vaadin 最近发布了 documentation about how to do this in their blog

简短摘要

要升级您的 Vaadin 8 应用程序以使用 GWT 2.9.0,请添加以下内容 属性:

<vaadin.gwt.version>2.9.0</vaadin.gwt.version>

然后将依赖项添加到您的 pom.xml。如果你有一个多模块项目,你需要选择定义了 widgetset 的模块。

<dependency>
    <groupId>com.google.gwt</groupId>
    <artifactId>gwt-dev</artifactId>
    <version>${vaadin.gwt.version}</version>
    <exclusions>
        <exclusion>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>apache-jsp</artifactId>
        </exclusion>
    </exclusions>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.google.gwt</groupId>
    <artifactId>gwt-user</artifactId>
    <version>${vaadin.gwt.version}</version>
    <scope>provided</scope>
</dependency>

GWT 2.9.0 中有一项重大更改,但很容易在本地对其进行修补。您需要使用包含客户端代码的模块。将此 class 添加到包 com.google.gwt.dev.shell:

package com.google.gwt.dev.shell;

public final class CheckForUpdates {
    // NOP
}

此外,GitHub https://github.com/TatuLund/gwt290-demo

中还有完整的多模块概念应用证明