GWT编译的一些微妙之处——”;gwt模块可能需要(重新)编译。”;

GWT编译的一些微妙之处——”;gwt模块可能需要(重新)编译。”;,gwt,Gwt,我正在向GAE部署一个应用程序。我在Eclipse中有一个单独的项目设置,有三个独立的GWT模块,每个模块都有自己的HTML页面、入口点等。它们共享很多代码 当我将应用程序部署到appengine时,其中两个模块工作正常。我可以完美地访问他们的HTML页面。第三个错误是“gwt模块'xyz'可能需要(重新)编译。”我尝试过两次重新编译和重新部署,但都没有效果,也不知道如何继续 关于这个问题的其他线程指向gwt.codeserver参数,事实上,如果我添加该参数,坏模块将运行。。。但它似乎是在开发

我正在向GAE部署一个应用程序。我在Eclipse中有一个单独的项目设置,有三个独立的GWT模块,每个模块都有自己的HTML页面、入口点等。它们共享很多代码

当我将应用程序部署到appengine时,其中两个模块工作正常。我可以完美地访问他们的HTML页面。第三个错误是“gwt模块'xyz'可能需要(重新)编译。”我尝试过两次重新编译和重新部署,但都没有效果,也不知道如何继续

关于这个问题的其他线程指向gwt.codeserver参数,事实上,如果我添加该参数,坏模块将运行。。。但它似乎是在开发模式下运行的!如果这是真的,我有点不高兴,因为我不想向任何人提供开发模式代码


任何建议都是受欢迎的-我的工作在这个问题上基本上完全停滞了。

我找到了自己的答案:在我的情况下,错误不是由缺少gwt.codesvr参数引起的(就像我在网上发现的所有其他情况一样)。相反,我在模块定义gwt.xml文件中添加的属性的模块重命名导致了混淆。我将讲述整个故事,以防它有助于其他人了解更多

  • 我创建了一个新模块和一个新的HTML页面
  • 模块的名称是com.reallyllong.and.unveldy,我的HTML页面从com.reallyllong.and.unveldy/com.reallyllong.and.unveldy.nocache.js中引入了javascript
  • 后来,我变得聪明起来,使用rename to属性来重命名 com.reallyllong.and.unbeldy改为“short”,不更改我的HTML代码。 我忘了
  • 这并没有影响我好几天,因为我想eclipse足够聪明,可以重新编译这两个文件,或者其他什么。谁知道呢。我怀疑gwt.codesvr参数实际上启用了这种模糊行为,从dev模式而不是从js文件加载代码

    最终,修复很简单:我更改了HTML文件,以便从short/short.nocache.js中提取js。 成功了!
    呜呼

    我分两步解决了这个问题:

  • 在eclipse中,单击红色图标“GWT编译项目”

  • 在eclipse右clik->runasmaven包中


  • 下面是抛出此消息的代码

    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方法

    也就是说,当我没有这个问题时,这个代码不会编译到*.nocache.js文件中,所以这才是真正的错误所在。

    将这些行添加到XXX.gwt.xml文件对我来说很有用:(gwt版本2.5.1)

    
    
    没有为我做任何事:/也为我工作。我使用了GWT2.7.0,没有这个导出的war(使用正确编译的GWT),它只能在IE中工作。有了它,Chrome和Firefox也可以使用。
    <add-linker name="xsiframe" />
    <set-configuration-property name="devModeRedirectEnabled"
        value="true" />
    <set-property name="compiler.useSourceMaps" value="true" />