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无法正常工作。 以下虽然解决了这个问题。
多个步骤:
- 更新项目属性 – >部署使用eclipse部署GWT maven项目的 Assembly使用webapp目录而不是目标/项目目录
- mvn清理软件包
- mvn gwt:编译
- 在Eclipse中,点击'GWT编译项目' – > Advacned – >删除'-war src / main / webapp'参数并点击编译。
输出应该是这样的 – 链接到目标/项目1.0-SNAPSHOT / ModuleName
…和部署工作正常。
这也适用于所有其他有效的答案在这里:有时你可能需要做一个硬/caching浏览器刷新(Ctrl + F5)后,其中之一。