为 Java 11 更新 Vaadin 项目的 GWT
Updating Vaadin project's GWT for Java 11
我无法使用 JDK 11.
的 vaadin 和 gwt 组件构建我的 maven 项目
我已经将 gwt-user 和 gwt-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
中还有完整的多模块概念应用证明
我无法使用 JDK 11.
的 vaadin 和 gwt 组件构建我的 maven 项目我已经将 gwt-user 和 gwt-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
中还有完整的多模块概念应用证明