2014-09-24 98 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代碼服務器在路徑中。

發佈答案希望有一天,有人可能會覺得它有用。

相關問題