GWT模块可能需要(重新)编译REDUX

当在编译模式下运行时,我得到这个可怕的GWT模块'mymodule'可能需要(重新)编译对话框消息。

我已经编译了其他人build议在编译模式下运行的GWT给出这个错误消息的事情列表。 我打开了由maven创build的WAR文件,所有的文件都在正确的位置。 我证实了这个对另一个GWT maven项目,没有得到这个错误。 但是,下面的build议都没有纠正这个问题。 我也没有能够确定这两个项目之间有什么不同之处 – 这个工程和我的工程不能在编译模式下运行。

  • 在html启动页面名称匹配模块?
  • 很多蹩脚的build议将gwt.codesrv查询string参数添加到URL。 但是,重点是在编译模式下运行。 显然,我不想在托pipe模式下运行。 这样可行。 我试图在Tomcat的编译模式下运行。
  • 清除浏览器caching? – 不。 没有帮助
  • 我还没有超过mymodule.gwt.xml中的“user.agent”属性
  • 添加到maven-clean-pluginconfiguration你的eclipse输出目录:src / main / webapp / WEB-INF / classes

我还有什么可以尝试?

你是否使用src/main/webapp作为“war文件夹”来启动DevMode? 换句话说,在src/main/webapp是否有*.nocache.js ? 在这种情况下,这个文件将覆盖由gwt-maven-plugin调用的GWT编译器生成的文件。

由DevMode生成的*.nocache.js (当没有人存在时,由前一个GWT编译生成)仅包含启动DevMode所需的位,否则将失败并出现上述错误。

src/main/webapp/<MODULE_NAME>查找一个名为<MODULE_NAME>.nocache.js的文件,并将其删除/重命名。

然后做你的mvn包和所有'应该'没事。

在Eclipse中运行Dev模式时可能会发生此问题。 Eclipse将生成nocache.js文件,并将其放在src/main/webapp目录下。

然后,当你运行mvn pacakge ,maven插件创build了nocache.js部署,并把它放在正确的位置,但是当它把文件打包成一场战争,然后超过它的部署nocache.js与一个Eclipse创build – 无赖!

如果在应用程序中有另一个页面的静态链接(即myModule2.html),我在DevMode中发现了同样的问题。 因为它缺less?gwt.codesvr = 127.0.0.1:9997string,所以它被解释为一个静态的(已编译的)GWT应用程序,它不是,抛出你提到的错误代码。

在这里输入图像描述

当然,解决scheme不是使用硬编码的文字链接,而是让GWT为你做。 希望能帮助别人。

更新:

这是在标准的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; } ... } 

因此,防止编译器消息

  • 在URL中没有gwt.hybrid
  • 也没有gwt.hosted =
  • 或get.codesvr =
  • 或者一个Window.external.getOnLoad方法

所以,在popup窗口的情况下,一些服务器代码redirect了DevMode会话url,但没有添加“codesvr =”参数,因此显示了警告。

你编译的源代码? 这是一个非常不明显的步骤。 如果你使用的是Eclipse,你可以点击红色的工具箱图标进行编译。

您必须运行mvn gwt:compile另外mvn gwt:compile通常的mvn clean install package ,因为GWT编译不是maven-package阶段的一部分。 这解决了烦人的Javascript(重新)编译错误。

我有一个类似的问题。 在我的GWT项目做mvn clean install得到了一个战争文件,在tomcat中部署导致相同的“GWT模块”mymodule“可能需要(重新)编译”对话框消息。 我也在这里做了所有提到的东西没有任何成功。

mvn clean install -DskipTests=true为我做了这份工作。
要么
在不调用生成的testingURL的情况下执行mvn clean install (例如: http://<localIp>:53701/mymoduleJUnit.JUnit/junit-standards.html?gwt.codesvr=<localIp>:53697

testing阶段显然是通过一些奇特的开发模式url覆盖了我最初创build的*.nocache.js ,因此最终打包了一个错误的*.nocache.js

我的开发模式已正确configuration,上述解决scheme无法正常工作。 以下虽然解决了这个问题。

多个步骤:

  1. 更新项目属性 – >部署使用eclipse部署GWT maven项目的 Assembly使用webapp目录而不是目标/项目目录
  2. mvn清理软件包
  3. mvn gwt:编译
  4. 在Eclipse中,点击'GWT编译项目' – > Advacned – >删除'-war src / main / webapp'参数并点击编译。

输出应该是这样的 – 链接到目标/项目1.0-SNAPSHOT / ModuleName

…和部署工作正常。

这也适用于所有其他有效的答案在这里:有时你可能需要做一个硬/caching浏览器刷新(Ctrl + F5)后,其中之一。