Перенос веб-приложения GWT 2.5 на Java 10

У меня есть серьезное веб-приложение, созданное с использованием GWT-2.5.1 и Java 8. В связи с прекращением поддержки 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')

Глядя на файлы 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>

Эта компиляция вполне успешно работает с Java 8. Что мне нужно сделать, чтобы это исправить?


person Simon Callan    schedule 16.08.2018    source источник


Ответы (1)


Согласно Release_Notes-classpath8_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.

person Naman    schedule 16.08.2018