【问题标题】:Updating Vaadin project's GWT for Java 11为 Java 11 更新 Vaadin 项目的 GWT
【发布时间】:2019-10-18 13:12:14
【问题描述】:

我无法使用 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。

【问题讨论】:

  • 你的 pom.xml 中有什么?这个问题也是关于完全相同的问题:GWT Java11

标签: gwt vaadin java-11 vaadin8


【解决方案1】:

如果您想设置您的 Vaadin 8 项目以在服务器端和客户端(即 GWT)代码中支持 Java 11,您需要修补项目以使用 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。如果您有一个多模块项目,则需要选择定义小部件集的模块。

<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 中有一个重大更改,但很容易在本地修补它。您需要使用包含客户端代码的模块。将这个类添加到包com.google.gwt.dev.shell

package com.google.gwt.dev.shell;

public final class CheckForUpdates {
    // NOP
}

此外,GitHub https://github.com/TatuLund/gwt290-demo 中还有完整的多模块概念证明应用程序

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 升级到最新的 Vaadin8 版本 (8.9.1) 后即可使用。谢谢。
    【解决方案3】:

    GWT 2.8 不适用于 JDK 11,因此 widgetset 编译将不起作用。您需要依赖 JDK 8。

    【讨论】:

    • 据我所知,GWT 2.8.2 确实适用于 Java 9-12,至少对于将 java 编译为 js 而言。
    • 您可能需要将Java的源代码级别限制为1.8
    猜你喜欢
    • 2019-04-01
    • 2022-01-17
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多