Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT模块可能需要重新编译_Gwt_Maven - Fatal编程技术网

GWT模块可能需要重新编译

GWT模块可能需要重新编译,gwt,maven,Gwt,Maven,在编译模式下运行时,我得到这个可怕的GWT模块“mymodule”可能需要(重新)编译对话框消息 我已经编译了一个列表,当GWT在编译模式下运行时给出这个错误消息时,其他人建议尝试。我打开了maven创建的WAR文件,所有文件都在正确的位置。我针对另一个没有得到此错误的GWT maven项目确认了这一点。但是,以下建议均未纠正该问题。我也无法确定这两个项目之间缺少什么区别——一个有效,另一个不在编译模式下运行 在URL中添加gwt.codesrv查询字符串param的建议太多了。但是,关键是

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

我已经编译了一个列表,当GWT在编译模式下运行时给出这个错误消息时,其他人建议尝试。我打开了maven创建的WAR文件,所有文件都在正确的位置。我针对另一个没有得到此错误的GWT maven项目确认了这一点。但是,以下建议均未纠正该问题。我也无法确定这两个项目之间缺少什么区别——一个有效,另一个不在编译模式下运行

  • 在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

我的开发模式配置正确,上述解决方案无法工作。不过,下面的内容确实解决了这个问题

多个步骤:

  • 使用更新项目属性->部署程序集
  • 清洁包装
  • mvn gwt:编译
  • 在eclipse中,单击“GWT编译项目”->Advacned->Remove'-warsrc/main/webapp'参数并点击Compile
  • 输出应该是这样的- 链接到目标/project-1.0-SNAPSHOT/ModuleName


    。。。部署工作正常。

    这也适用于此处的所有其他有效答案:有时,在遵循其中一个选项后,您可能需要执行硬/缓存浏览器刷新(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目录吗?看,我不明白这篇文章的答案在哪里。那么我应该删除这个文件吗?或者我该怎么办?(实际上删除了文件渲染应用程序的非功能性)这非常有用,感谢