【问题标题】:GWT module may need to be (re)compiled REDUXGWT 模块可能需要(重新)编译 REDUX
【发布时间】:2011-04-19 15:50:38
【问题描述】:

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

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

我还能尝试什么?

【问题讨论】:

    标签: gwt maven


    【解决方案1】:

    您是否使用src/main/webapp 作为“war 文件夹”启动了 DevMode?或者换句话说,您的src/main/webapp 中是否有*.nocache.js?在这种情况下,该文件将覆盖 GWT 编译器生成的文件,由 gwt-maven-plugin 调用。

    由 DevMode 生成的*.nocache.js(当不存在时,由先前的 GWT 编译生成)仅包含启动 DevMode 所需的位,否则将失败并出现上述错误。

    【讨论】:

    • 好主意,是的,我愿意。我为 maven-clean-plugin 添加了一个额外的配置来删除 src/main/webapp/WEB-INF/classes。根据您的建议,我刚刚添加了 src/main/webapp/SpringGridGui,因为我应该从一开始就添加。删除此工作目录是解决方法。谢谢托马斯!
    • 最好遵循建议并使用 target/myapp-0.0.1-SNAPSHOT/ 作为“战争文件夹”code.google.com/eclipse/docs/faq.html#gwt_with_maven 启动 DevMode
    • 在此链接中的哪个位置:code.google.com/eclipse/docs/faq.html#gwt_with_maven 他们是否提到了有关为 DevMode 设置战争目录的任何内容?
    • 我不明白这篇文章的答案在哪里。那我应该删除文件吗?或者我该怎么做? (实际上是删除文件呈现的应用程序不起作用)
    【解决方案2】:

    src/main/webapp/<MODULE_NAME> 中查找名为<MODULE_NAME>.nocache.js 的文件并删除/重命名它。

    然后做你的 mvn 包,一切都“应该”没问题。

    当您在 Eclipse 中运行开发模式时,可能会出现此问题。 Eclipse会生成nocache.js文件,放到src/main/webapp目录下。

    然后,当您运行 mvn pacakge 时,maven 插件会创建部署 nocache.js 并将其放置在正确的位置,但是当它将文件打包到战争中时,它会使用一个覆盖它的部署 nocache.js创建了 Eclipse - 太糟糕了!

    【讨论】:

    【解决方案3】:

    如果应用程序中存在指向另一个页面的静态链接(即 myModule2.html),我在 DevMode 中发现了同样的问题。因为它缺少 ?gwt.codesvr=127.0.0.1:9997 字符串,所以它被解释为一个静态(已编译)GWT 应用程序,它不是,抛出你提到的错误代码。 p>

    当然,解决方案不是使用硬编码的文字链接,而是让 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;
        }
      ...
    }
    

    因此,为了防止编译器消息

    • 网址中没有 gwt.hybrid
    • 并且没有 gwt.hosted=
    • 或 get.codesvr=
    • 或 Window.external.getOnLoad 方法

    因此,在弹出窗口的情况下,一些服务器代码正在重定向 DevMode 会话 url,但没有添加回 "codesvr=" 参数,因此显示了警告。

    【讨论】:

      【解决方案4】:

      你编译了源代码吗?这是一个令人惊讶的非显而易见的步骤。如果您使用的是 eclipse,则可以通过单击红色工具箱图标进行编译。

      【讨论】:

      • mvn package 命令创建运行编译模式的战争。我打开了由此产生的战争,看到了 mymodule.nocache.html 和 *.cache.html
      【解决方案5】:

      除了通常的 mvn clean install package 之外,您还必须运行 mvn gwt:compile,因为 GWT 编译不是 maven-package-phase 的一部分。 这解决了烦人的 Javascript-(re)compile-error。

      【讨论】:

      • mvn gwt:compile 是否等同于:右键项目->谷歌->GWT编译?我认为是这样?如果是这样,那么这就是我的解决方案(我没有运行 Maven 包)...
      • 查看我与另一个类似问题的类似解决方案以获取更多详细信息:stackoverflow.com/a/35387271/1357094
      【解决方案6】:

      我遇到了类似的问题。在我的 GWT 项目上执行 mvn clean install 得到了一个 war 文件,在部署到 tomcat 时会导致相同的“GWT Module 'mymodule' may need to be (re)compiled”对话框消息。我也在这里做了所有提到的事情,但没有任何成功。

      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

      【讨论】:

        【解决方案7】:

        我的开发模式配置正确,但上述解决方案不起作用。以下确实解决了这个问题。

        多个步骤:

        1. 更新项目属性 -> 使用 Deploy GWT maven project with eclipse deploys webapp directory instead of target/project directory 部署程序集
        2. mvn 清洁包
        3. mvn gwt:compile
        4. 在 Eclipse 中,单击“GWT 编译项目”-> Advacned -> 删除“-war src/main/webapp”参数并点击编译。

        输出应该是这样的 - 链接到 target/project-1.0-SNAPSHOT/ModuleName

        ...部署工作正常。

        【讨论】:

          【解决方案8】:

          这也适用于此处的所有其他有效答案:有时您可能只需要在遵循其中一个答案后进行硬/缓存浏览器刷新 (ctrl+F5)。

          【讨论】:

            猜你喜欢
            • 2013-07-04
            • 2013-08-01
            • 2015-06-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多