GWT module may need to be (re)compiled REDUX

前端 未结 8 1590
日久生厌
日久生厌 2020-11-27 03:30

When running in compiled mode I get this dreaded GWT Module \'mymodule\' may need to be (re)compiled dialog message.

I\'ve compiled a list of the things that others

相关标签:
8条回答
  • 2020-11-27 04:08

    This could apply to all other valid Answers here too: Sometimes you may need to just do a hard/cache browser refresh (ctrl+F5) after following one of them.

    0 讨论(0)
  • 2020-11-27 04:12

    I found the same issue in DevMode if there was a static link to another page in the application (i.e. myModule2.html). Because it lacked the ?gwt.codesvr=127.0.0.1:9997 string, it was interpreted as a static (already compiled) GWT app, which it was not, throwing the error code you mentioned.

    enter image description here

    Of course the solution is not to use hardcoded literal links, but let GWT make them for you. Hope that helps someone.

    UPDATE:

    This is the code that throws this error in the standard GWT *.nocache.js file.

    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;
        }
      ...
    }
    

    Thus, to prevent the compiler message

    • don't have gwt.hybrid in the URL
    • AND DON't have gwt.hosted=
    • OR get.codesvr=
    • OR a Window.external.getOnLoad method

    So, in the case of the popup, some server code was redirecting a DevMode session url, but not adding back the "codesvr=" parameter, hence the warning was shown.

    0 讨论(0)
  • 2020-11-27 04:17

    Look for a file called <MODULE_NAME>.nocache.js in src/main/webapp/<MODULE_NAME> and delete/rename it.

    Then do your mvn package and all 'should' be fine.

    This problem can occurs when you run Dev mode in Eclipse. Eclipse will generate the nocache.js file and put it under the src/main/webapp directory.

    Then when you run mvn pacakge, the maven plugin create the deployment nocache.js and puts it in the right place, but then when it packages files into a war it then over-rights it's deployment nocache.js with the one Eclipse created - bummer!

    0 讨论(0)
  • 2020-11-27 04:20

    Have you started the DevMode using your src/main/webapp as the "war folder"? or in other words, is there a *.nocache.js in your src/main/webapp? In that case, this file will overwrite the one produced by the GWT compiler as called by the gwt-maven-plugin.

    The *.nocache.js generated by the DevMode (when no one exists, generated by a previous GWT compilation) contains only the necessary bits to launch the DevMode, and will otherwise fail with the above-mentioned error.

    0 讨论(0)
  • 2020-11-27 04:24

    Have you compiled the source? This is a surprisingly non-obvious step. If you're using eclipse, you can compile by clicking the red toolbox icon.

    0 讨论(0)
  • 2020-11-27 04:25

    I had a similar problem. Doing mvn clean install on my GWT project got me a war file, which upon deploying in tomcat resulted in the same "GWT Module 'mymodule' may need to be (re)compiled" dialog message. I also did all the mentioned stuff in here without any success.

    Doing mvn clean install -DskipTests=true did the job for me.
    OR
    Doing mvn clean install without invoking the generated test URL (sth. like this: http://<localIp>:53701/mymoduleJUnit.JUnit/junit-standards.html?gwt.codesvr=<localIp>:53697)

    The test phase obviously did overwrite my initially created *.nocache.js via some fancy development mode url, thus packaging me a wrong *.nocache.js in the end.

    0 讨论(0)
提交回复
热议问题