Некоторая тонкость компиляции GWT - «модуль gwt может потребоваться (пере) скомпилировать». - PullRequest
3 голосов
/ 11 сентября 2010

Я развертываю приложение в GAE. У меня есть одна настройка проекта в Eclipse, с тремя отдельными модулями GWT, каждый со своей собственной HTML-страницей, точкой входа и т. Д. Они имеют много общего кода.

Когда я внедряю приложение в appengine, ДВА модуля работают нормально. Я могу получить доступ к их HTML-страницам отлично. Третий дает мне ошибку, что «модуль gwt 'xyz' может нуждаться в (пере) компиляции». Я дважды пытался перекомпилировать и перераспределить, но безрезультатно и не знаю, как двигаться дальше.

Другие потоки об этой проблеме указывают на аргумент gwt.codeserver, и, действительно, если я добавлю этот аргумент, плохой модуль запустится ... но, похоже, он работает в режиме разработки! Если это Это правда, я немного удивлен, так как не хочу никому передавать код режима разработки.

Любые предложения приветствуются - моя работа в этом вопросе в основном полностью застопорилась.

Ответы [ 4 ]

8 голосов
/ 11 сентября 2010

Я нашел свой собственный ответ: в моем случае ошибка не была вызвана отсутствующим аргументом gwt.codesvr (как и во всех других случаях, на которые я ссылался в Интернете).Вместо этого атрибут переименования модуля, который я добавил в файле определения модуля gwt.xml , вызвал путаницу.Я расскажу всю историю на случай, если она поможет другим понять больше.

  1. Я создал новый модуль и новую HTML-страницу.
  2. Имя модуля было com.reallylong.and.unwieldy , и моя HTML-страница вытащила JavaScript из com.reallylong.and.unwieldy / com.reallylong.and.unwieldy.nocache.js .
  3. Позже я стал умным и использовал атрибут rename-to , чтобы переименовать com.reallylong.and.unwieldy to "Короче говоря, " не меняется мой HTML-код.Я забыл.

Это не влияло на меня в течение нескольких дней, так как я думаю, что Eclipse достаточно умен, чтобы перекомпилировать оба файла или что-то в этом роде.Кто знает.Я подозреваю, что аргумент gwt.codesvr фактически включал это затенение, загружая код из режима разработки, а не из файла js.

В конечном счете, исправление было простым: я изменил свой HTMLфайл, так что JS был извлечен из short / short.nocache.js .И это сработало!Woohoo!

2 голосов
/ 22 июля 2015

Добавление этих строк в файл XXX.gwt.xml работало для меня: (GWT версия 2.5.1)

<add-linker name="xsiframe" />
<set-configuration-property name="devModeRedirectEnabled"
    value="true" />
<set-property name="compiler.useSourceMaps" value="true" />
1 голос
/ 04 февраля 2013

Вот код, который выдает это сообщение.

function B() {
    var b = false;
    try {
    var c = Window.location.search;
    return (c.indexOf("gwt.hosted=") != -1 
        || (c.indexOf("gwt.codesvr=") != -1
        || Window.external && Window.external.gwtOnLoad)) 
        && c.indexOf("gwt.hybrid") == -1
    } catch (a) {}
    B = function () {
    return b
    };
    return b
}
// and later, if B() returns false, show recompile error
if (!B()) {
    try {
    alert(Pb);
    return;
    }
  ...
}

Таким образом, чтобы предотвратить сообщение компилятора

  • , не включайте gwt.hybrid в URL
  • И не иметь gwt.hosted =
  • ИЛИ get.codesvr =
  • ИЛИ Window.external.getOnLoad метод

Как говорится,когда у меня нет этой проблемы, этот код не не скомпилирован в файл * .nocache.js, так что именно в этом и заключается настоящий bugaboo.

0 голосов
/ 22 июня 2011

Я решил это в два этапа:

  1. в затмении нажмите на красный значок "Проект компиляции GWT"

  2. в правом клике затмения-> запустить как Maven пакет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...