2014-09-24 56 views
1

我已经将gwt 2.5.1升级到2.6,并且自从超级开发模式启动后,我可以在myApp:9876上看到bookmarklets,模块加载,但没有“编译”按钮当我点击“开启模式”时。代码服务器加载好,我可以看到正在编译的排列。SuperDevMode无法升级到gwt 2.6后工作

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加载点在我的开发模块和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

+0

您是否尝试删除配置属性?我想,你不再需要它们了。 – 2014-09-24 10:00:46

+0

是的,我做过。我读了很多,在2.6或更高版本中,你不需要启用superdevmode,它应该默认启用。它没有帮助不幸。 – monika 2014-09-24 10:07:23

+0

你是否也启动了服务器来提供静态文件?我使用的是Intellij,我需要两台服务器(一台代码服务器和一台普通的开发服务器)来运行SDM。 – 2014-09-24 11:15:59

回答

7

我的一位同事得到了这个底部。主要问题是在2.6版本中通过https禁用superdevmode,而在早期版本中并非如此。这里的调整,以获得superdevmode和源地图上GWT 2.6工作通过https名单:

  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代码服务器在路径中。

发布答案希望有一天,有人可能会觉得它有用。

相关问题