GWT模块可能需要重新编译
在编译模式下运行时,我得到这个可怕的GWT模块“mymodule”可能需要(重新)编译对话框消息 我已经编译了一个列表,当GWT在编译模式下运行时给出这个错误消息时,其他人建议尝试。我打开了maven创建的WAR文件,所有文件都在正确的位置。我针对另一个没有得到此错误的GWT maven项目确认了这一点。但是,以下建议均未纠正该问题。我也无法确定这两个项目之间缺少什么区别——一个有效,另一个不在编译模式下运行GWT模块可能需要重新编译,gwt,maven,Gwt,Maven,在编译模式下运行时,我得到这个可怕的GWT模块“mymodule”可能需要(重新)编译对话框消息 我已经编译了一个列表,当GWT在编译模式下运行时给出这个错误消息时,其他人建议尝试。我打开了maven创建的WAR文件,所有文件都在正确的位置。我针对另一个没有得到此错误的GWT maven项目确认了这一点。但是,以下建议均未纠正该问题。我也无法确定这两个项目之间缺少什么区别——一个有效,另一个不在编译模式下运行 在URL中添加gwt.codesrv查询字符串param的建议太多了。但是,关键是
- 在URL中添加gwt.codesrv查询字符串param的建议太多了。但是,关键是在编译模式下运行而不使用。显然,我不想在托管模式下运行。这很有效。我试图在Tomcat中以编译模式运行
- 正在清除浏览器缓存?--不。没用
- 我对mymodule.gwt.xml中的“user.agent”属性进行了而不是
还有什么我可以试试的吗?你编译了源代码了吗?这是一个出人意料的不明显的步骤。如果您使用的是eclipse,则可以通过单击红色工具箱图标进行编译 您是否已使用
src/main/webapp
作为“war文件夹”启动DevMode?或者换句话说,您的src/main/webapp
中是否有*.nocache.js
?在这种情况下,该文件将覆盖GWT编译器生成的文件,正如GWT maven插件所调用的那样
DevMode生成的
*.nocache.js
(当没有人时,由以前的GWT编译生成)只包含启动DevMode所需的位,否则将因上述错误而失败。除了通常的mvn clean install包
之外,还必须运行mvn GWT:compile
,因为GWT编译不是maven包阶段的一部分。
这解决了恼人的Javascript-(重新)编译错误。如果应用程序中有指向另一个页面的静态链接(即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;
}
...
}
因此,要防止编译器消息
- URL中没有gwt.hybrid
- 而且没有gwt=
- 或者找一个编码器=
- 或Window.external.getOnLoad方法
因此,在弹出窗口的情况下,一些服务器代码重定向了DevMode会话url,但没有添加回“codesvr=”参数,因此显示了警告。在
src/main/webapp/
中查找名为.nocache.js
的文件,然后删除/重命名它
然后做你的mvn包,所有的“应该”都很好
在Eclipse中运行Dev模式时可能会出现此问题。Eclipse将生成nocache.js文件并将其放在src/main/webapp
目录下
然后,当您运行
mvn pacakge
时,maven插件会创建部署nocache.js
并将其放置在正确的位置,但当它将文件打包成一场战争时,它会超越权限,它的部署nocache.js
,并且创建了一个Eclipse-bummer 我也有类似的问题。在我的GWT项目上执行mvn clean install
得到了一个war文件,在tomcat中部署该文件时,会产生相同的“GWT模块‘mymodule’可能需要(重新)编译”对话框消息。我在这里也做了所有提到的事情,但没有成功
执行mvn清洁安装-DskipTests=true为我完成了任务。或
在不调用生成的测试URL的情况下执行
mvn清理安装
(如下所示:http://:53701/mymoduleJUnit.JUnit/JUnit standards.html?gwt.codesvr=:53697
)
测试阶段显然通过一些奇特的开发模式url覆盖了我最初创建的
*.nocache.js
,因此最终给我打包了一个错误的*.nocache.js
。我的开发模式配置正确,上述解决方案无法工作。不过,下面的内容确实解决了这个问题
多个步骤:
。。。部署工作正常。这也适用于此处的所有其他有效答案:有时,在遵循其中一个选项后,您可能需要执行硬/缓存浏览器刷新(ctrl+F5)。mvn package命令为运行编译模式创建war。我已经打开了由此产生的战争,看到了mymodule.nocache.html和*.cache.htmlgood的想法,是的,我看到了。我为maven clean插件添加了一个额外的配置来删除src/main/webapp/WEB-INF/classes。根据您的建议,我刚刚添加了src/main/webapp/SpringGridGui,这是我从一开始就应该添加的。修复方法是删除此工作目录。谢谢你,托马斯!更好的做法是按照建议启动DevMode,并将
target/myapp-0.0.1-SNAPSHOT/
作为“war文件夹”,其中的链接为:code.google.com/eclipse/docs/faq.html#gwt_with_maven。他们提到了为DevMode设置war目录吗?看,我不明白这篇文章的答案在哪里。那么我应该删除这个文件吗?或者我该怎么办?(实际上删除了文件渲染应用程序的非功能性)这非常有用,感谢