Migrating a GWT 2.5 web app to Java 10

2019-05-03 12:28发布

问题:

I have a substantial web-app that is built using GWT-2.5.1 and Java 8. With the deprecation of Java 8, I need to migrate this to Java 10 / 11.

I've managed to get past a few issues, but I've hit one I cannot get past.

When building the app, I get the following error:

[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')

Looking at the gwt.xml files, it looks correct to me:

<?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>

This compile quite happily with Java 8. What do I need to do to fix this?

回答1:

According to the Release_Notes_2_8_2

Supports running in Java 9. Note that this does not yet mean that GWT can compile Java 9 sources, or support the Java 9 JRE changes, but that a Java 9 JRE can be used to compile a GWT project. Do note that the new --module-path flag is not supported, but -classpath must still be used as in the past.

and the discussion here -

If you aren't using java 9 modules, the latest release will work. It does this by reading the classpath from System.getProperty("java.class.path"), so if you are using standard tools for creating classpath, everything should work fine. If you are doing anything non-standard for assigning classpaths, or if you are using java 9 modules (i.e. you supply a modulepath instead of classpath), this will very likely not work for you.

It seems as if, the most you can do is to upgrade to gwt-2.8.2, with a restriction of using just the classpath and not making your application modular.

Also, here is a read further for the Java10 support discussion.