Модуль GWT может потребоваться (пере) скомпилировать REDUX - PullRequest
59 голосов
/ 19 апреля 2011

При работе в скомпилированном режиме я получаю этот страшный модуль GWT 'mymodule', возможно, потребуется (пере) скомпилированное диалоговое сообщение.

Я составил список вещей, которые другие предложили попробовать, когдаучитывая это сообщение об ошибке GWT работает в скомпилированном режиме.Я открыл файл WAR, созданный maven, и все файлы находятся в нужном месте.Я подтвердил это в отношении другого проекта GWT maven, который не получает эту ошибку.Однако ни одно из приведенных ниже предложений не устранило проблему.Также я не смог определить, какая разница отсутствует между этими двумя проектами - тот, который работает, и мой, который не будет работать в скомпилированном режиме.

Что еще можно попробовать?

Ответы [ 8 ]

53 голосов
/ 21 апреля 2011

Запустили ли вы DevMode, используя ваш src/main/webapp в качестве «военной папки»?или, другими словами, есть ли *.nocache.js в вашем src/main/webapp?В этом случае этот файл будет перезаписывать файл, созданный компилятором GWT, как он вызывается плагином gwt-maven.

*.nocache.js, сгенерированный DevMode (когда никто не существует, сгенерированный предыдущим GWTкомпиляция) содержит только необходимые биты для запуска DevMode, и в противном случае произойдет сбой с вышеупомянутой ошибкой.

16 голосов
/ 30 апреля 2012

Найдите файл с именем <MODULE_NAME>.nocache.js в src/main/webapp/<MODULE_NAME> и удалите / переименуйте его.

Затем выполните пакет mvn, и все «должно быть» в порядке.

Эта проблема может возникать при запуске режима разработки в Eclipse.Eclipse сгенерирует файл nocache.js и поместит его в каталог src/main/webapp.

Затем, когда вы запустите mvn pacakge, плагин maven создаст развертывание nocache.js и поместит его в нужное место, нозатем, когда он упаковывает файлы в войну, он переопределяет права на развертывание nocache.js созданным Eclipse - облом!

5 голосов
/ 18 марта 2012

Я обнаружил ту же проблему в DevMode, если в приложении была статическая ссылка на другую страницу (т.е. myModule2.html). Поскольку в нем отсутствовала строка ? Gwt.codesvr = 127.0.0.1: 9997 , она интерпретировалась как статическое (уже скомпилированное) приложение GWT, а это не так, и выдает код ошибки, который вы упомянули.

enter image description here

Конечно, решение состоит не в том, чтобы использовать жестко закодированные буквенные ссылки, а в том, чтобы GWT сделал их для вас. Надеюсь, это кому-нибудь поможет.

UPDATE:

Этот код генерирует эту ошибку в стандартном файле GWT * .nocache.js.

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

Так, в случае всплывающего окна, некоторый серверный код перенаправлял URL-адрес сеанса DevMode, но не добавлял обратно параметр «codesvr =», поэтому было показано предупреждение.

2 голосов
/ 22 января 2012

Вы должны запустить mvn gwt:compile в дополнение к обычному mvn clean install package, так как GWT-компиляция НЕ является частью фазы maven-package-package. Это решает надоедливую Javascript- (пере) ошибку компиляции.

2 голосов
/ 20 апреля 2011

Вы скомпилировали источник? Это удивительно неочевидный шаг. Если вы используете eclipse, вы можете скомпилировать, нажав на красный значок панели инструментов.

0 голосов
/ 14 февраля 2016

Это также может относиться ко всем другим действительным ответам здесь: иногда вам может потребоваться просто обновить браузер в режиме hard / cache (ctrl + F5) после выполнения одного из них.

0 голосов
/ 24 марта 2014

Мой режим Dev был правильно настроен, и вышеуказанное решение не сработало. Следующее все же решило проблему.

Несколько шагов:

  1. Обновление свойств проекта -> сборка развертывания с использованием Развертывание проекта GWT maven с eclipse развертывает каталог webapp вместо каталога target / project
  2. Чистая упаковка mvn
  3. mvn gwt: compile
  4. В eclipse, нажмите «Проект компиляции GWT» -> Advacned -> Удалить аргумент «-war src / main / webapp» и нажмите «Компиляция».

Вывод должен быть таким - Ссылка на цель / project-1.0-SNAPSHOT / ModuleName

... и развертывание работает нормально.

0 голосов
/ 20 сентября 2013

У меня была похожая проблема.Выполнение mvn clean install в моем проекте GWT дало мне военный файл, который после развертывания в tomcat приводил к тому же диалоговому сообщению «Модуль GWT« mymodule », возможно, потребуется (пере) скомпилировать».Я также делал все упомянутые вещи здесь без какого-либо успеха.

Выполнение mvn clean install -DskipTests=true сделало работу за меня.ИЛИ ЖЕВыполнение mvn clean install без вызова сгенерированного тестового URL (например, вот так: http://<localIp>:53701/mymoduleJUnit.JUnit/junit-standards.html?gwt.codesvr=<localIp>:53697)

Этап тестирования, очевидно, перезаписал мои изначально созданные *.nocache.js через какой-то причудливый URL-адрес режима разработки, таким образом, упаковав меня неправильно*.nocache.js в конце.

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