Некоторые тонкости составления УГВ "модуля, может потребоваться (пере)компиляции."


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

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

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

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

4 3
gwt

4 ответа:

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

  1. я создал новый модуль и новую HTML-страницу.
  2. модуль назывался com.очень долго.и.громоздкий , и мой HTML-страница вытянута в javascript из com.очень долго.и.громоздкий / ком.очень долго.и.громоздкий.nocache.js .
  3. позже я поумнел и использовал атрибут rename-to для переименования кОм.очень долго.и.громоздкий на "короткий", не меняющий Мой HTML-код. Я и забыл.
Это не повлияло на меня в течение нескольких дней, так как я думаю, что eclipse достаточно умна, чтобы перекомпилировать оба файла или что-то в этом роде. Кто знает. Я подозреваю, что gwt.аргумент codesvr был на самом деле включение этого скрытого поведения, загрузка кода из режима dev вместо JS-файла.

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

Добавление этих строк в 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" />

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

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;
    }
  ...
}

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

  • нет ГВт.гибрид в URL
  • и не имеют ГВт.hosted=
  • или получить.codesvr=
  • или окно.внешний.getOnLoad метод

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

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

  1. В eclipse нажмите на красную иконку "GWT compile project"

  2. В eclipse right clik - > run as Maven package