升级到gwt 2.6后,SuperDevMode无法正常工作

时间:2014-09-24 09:47:10

标签: gwt gwt-super-dev-mode

我已经将gwt 2.5.1升级到2.6并且自从超级开发模式启动以来,我可以在myApp上看到bookmarklet:9876,模块加载,但是当我点击“Dev Mode On”时没有“编译”按钮”。代码服务器加载正常,我可以看到正在编译的排列。

build.xml的相关部分:

<property name="cpstring" value="${toString:gwt-codeserver}" />
    <target name="sdevmode" depends="build-dev">
        <java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
            <classpath>
                <pathelement path="${cpstring}" />
            </classpath>
            <jvmarg value="-Dorg.mortbay.util.FileResource.checkAliases=false" />
            <jvmarg value="-Xmx2g" />
            <jvmarg value="-XX:MaxPermSize=256M" />
            <jvmarg value="-XX:+UseParallelGC" />
            <arg value="-bindAddress" />
            <arg value="0.0.0.0" />
            <arg value="-src" />
            <arg value="${basedir}" />
            <arg value="-workDir" />
            <arg value="/tmp/test" />
            <arg value="path.to.dev" />
        </java>
</target>


     <!-- Super Dev Mode -->
<add-linker name="xsiframe" />
<set-property name="compiler.useSourceMaps" value="true" />
<set-configuration-property name="devModeRedirectEnabled" value="true" />
<set-configuration-property name="gwt.superdevmode" value="on" />
<set-configuration-property name="devModeUrlWhitelistRegexp" value=".*" />

当我检查超级开发模式div时,我看到一个标题为“此模块未启用超级开发模式”的li元素。源映射也不加载(服务器错误:500)。有什么想法吗?

顺便说一下:从intelliJ 13.1启动的超级开发模式也停止了这个更新(我也将SDK更新到2.6,没有区别)。我没有更改配置:

vmoptions: -Xmx2g
devmode params: -bindAddress 0.0.0.0 -src path.to.my.src

Gwtmodule在我的dev模块加载点并检查superdevmode。我得到的例外;

java.lang.RuntimeException: not found: includeSourceMapUrl
    at com.google.gwt.dev.codeserver.Recompiler.overrideConfig(Recompiler.java:314)
    at com.google.gwt.dev.codeserver.Recompiler.loadModule(Recompiler.java:254)
    at com.google.gwt.dev.codeserver.Recompiler.compile(Recompiler.java:105)
    at com.google.gwt.dev.codeserver.ModuleState.<init>(ModuleState.java:58)
    at com.google.gwt.dev.codeserver.CodeServer.makeModules(CodeServer.java:120)
    at com.google.gwt.dev.codeserver.CodeServer.start(CodeServer.java:95)
    at com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:71)
    at com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

不幸的是,我找不到它为什么会发生。 IntelliJ superdevmode配置: enter image description here

1 个答案:

答案 0 :(得分:7)

我的一位同事深究这一点。主要问题是2.6中的https禁用超级模式,而在早期版本中并非如此。以下是通过https获取在GWT 2.6上运行的superdevmode和源映射的调整列表:

  1. 定义在ssl页面上启用的自定义链接器:

    公共类MyLinker扩展了CrossSiteIframeLinker {

    @Override
    protected String getJsDevModeRedirectHookPermitted(LinkerContext context) {
        return "$wnd.location.protocol == \"http:\" " +
                "|| $wnd.location.protocol == \"https:\" " +
                "|| $wnd.location.protocol == \"file:\"";
    } }
    
  2. 将其包含在.xml

    <define-linker name="xsiframe" class="mypath.MyLinker" /> <add-linker name="xsiframe" />
    
  3. 启用源地图:

    <set-property name="compiler.useSourceMaps" value="true" /> <set-property name="compiler.useSymbolMaps" value="true"/>

  4. 如果您不在本地主机上工作,请将白名单正则表达式添加到您的dev.xml:

    <set-configuration-property name="urlWhitelistingRegexp" value="http://(.*\.myDesktop\.myDomain|localhost)(:\d+)?/.*" />

  5. 确保您的gwt代码服务器位于路径中。

  6. 发布答案希望有一天,某人可能觉得它很有用。