在编译模式下运行时,我得到这个可怕的GWT模块'mymodule'可能需要(重新)编译对话框消息。
我已经编译了其他人建议在编译模式下运行的GWT给出此错误消息时要尝试的事项的列表。我打开了maven创建的WAR文件,所有文件都在正确的位置。我在另一个没有出现此错误的GWT maven项目中确认了这一点。但是,以下建议都没有纠正这个问题。我也没有能够确定这两个项目之间缺少什么区别 - 一个工作的项目和我的项目将不会以编译模式运行。
我还能尝试什么?
答案 0 :(得分:53)
您是否使用src/main/webapp
作为“war文件夹”启动了DevMode?换句话说,*.nocache.js
中有src/main/webapp
吗?在这种情况下,该文件将覆盖由gwt-maven-plugin调用的GWT编译器生成的文件。
由DevMode生成的*.nocache.js
(当没有人存在时,由先前的GWT编译生成)仅包含启动DevMode所需的位,否则将因上述错误而失败。
答案 1 :(得分:16)
在<MODULE_NAME>.nocache.js
中查找名为src/main/webapp/<MODULE_NAME>
的文件并删除/重命名。
然后做你的mvn包,所有'应该'没问题。
在Eclipse中运行Dev模式时可能会发生此问题。 Eclipse将生成nocache.js文件并将其放在src/main/webapp
目录下。
然后当您运行mvn pacakge
时,maven插件会创建部署nocache.js
并将其放在正确的位置,但是当它将文件打包成战争时,它会过度保护它的部署{{ 1}}用一个Eclipse创建 - 糟糕!
答案 2 :(得分:5)
如果在应用程序中有另一个页面的静态链接(即myModule2.html),我在DevMode中发现了同样的问题。因为它缺少?gwt.codesvr = 127.0.0.1:9997 字符串,所以它被解释为静态(已编译的)GWT应用程序,它不是,抛出你提到的错误代码。
当然解决方案不是使用硬编码的文字链接,而是让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;
}
...
}
因此,要防止编译消息
因此,在弹出窗口的情况下,某些服务器代码重定向了DevMode会话URL,但没有添加“codesvr =”参数,因此显示了警告。
答案 3 :(得分:2)
你编译了源代码吗?这是一个令人惊讶的非显而易见的步骤。如果您正在使用eclipse,则可以通过单击红色工具箱图标进行编译。
答案 4 :(得分:2)
除了通常的mvn gwt:compile
之外,您还必须运行mvn clean install package
,因为GWT编译不是maven-package-phase的一部分。
这解决了恼人的Javascript-(重新)编译错误。
答案 5 :(得分:0)
我有类似的问题。在我的GWT项目上执行mvn clean install
给我一个war文件,在tomcat中部署导致相同的“GWT模块'mymodule'可能需要(重新)编译”对话框消息。我也在这里做了所有提到的东西而没有任何成功。
做mvn clean install -DskipTests=true
为我完成了这项工作
或
在不调用生成的测试URL的情况下执行mvn clean install
(例如:http://<localIp>:53701/mymoduleJUnit.JUnit/junit-standards.html?gwt.codesvr=<localIp>:53697
)
测试阶段显然通过一些花哨的开发模式url覆盖了我最初创建的*.nocache.js
,最终给我打错了*.nocache.js
。
答案 6 :(得分:0)
我的开发模式已正确配置,上面的解决方案无效。以下确实解决了这个问题。
多个步骤:
输出应该是这样的 - 链接到target / project-1.0-SNAPSHOT / ModuleName
......部署工作正常。
答案 7 :(得分:0)
这也适用于所有其他有效的答案:有时您可能需要在执行其中一个后执行硬/缓存浏览器刷新(ctrl + F5)。