将GWT 2.5 Web应用程序迁移到Java 10

Sim*_*lan 5 java gwt-2.5 java-10

我有一个使用GWT-2.5.1和Java 8构建的大量Web应用程序。随着Java 8的弃用,我需要将其迁移到Java 10/11。

我已经设法解决了一些问题,但是我遇到了一个我无法解决的问题。

在构建应用程序时,出现以下错误:

[INFO] Compiling module com.<xxx>
[INFO]    [ERROR] Unable to find type 'java.lang.Object'
[INFO]       [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')
Run Code Online (Sandbox Code Playgroud)

查看gwt.xml文件,对我来说似乎正确:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="xxxx">
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.google.gwt.user.theme.clean.Clean" />
    <inherits name="com.google.gwt.logging.Logging" />
    <inherits name="com.XXXXCoreBase" />
    <!-- Delete non-0inherits stuyff -->
</module>

<!-- XXXXCoreBase -->
<?xml version="1.0" encoding="UTF-8"?>
<module>
    <!-- Inherit the core Web Toolkit stuff. -->
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.google.gwt.query.Query"/>
    <!-- Other module inherits -->
    <inherits name="com.google.gwt.gen2.gen2" />
    <inherits name="com.Microsoft" />
    <inherits name="org.Org" />

    <source path="client" />
    <source path="shared" />

</module>
Run Code Online (Sandbox Code Playgroud)

使用Java 8可以很愉快地进行编译。要解决此问题,我需要做些什么?

Nam*_*man 5

根据Release_Notes_2_8_2

支持在Java 9中运行。请注意,这并不意味着GWT可以编译Java 9源或支持Java 9 JRE更改,而是可以使用Java 9 JRE来编译GWT项目。请注意,--module-path不支持新标志,但-classpath仍必须像过去一样使用。

这里讨论 -

如果您不使用Java 9模块,则可以使用最新版本。它是通过从System.getProperty(“ java.class.path”)中读取类路径来完成此操作的,因此,如果您使用标准工具来创建类路径,那么一切都会正常进行。如果您正在做任何非标准的分配类路径的操作,或者您正在使用Java 9模块(即,您提供的是模块路径而不是类路径),那么这很可能对您不起作用。

似乎,您最多可以做的就是升级到gwt-2.8.2,但仅限于使用类路径而不将应用程序模块化。

另外,这里还有Java10支持讨论更多内容。