2

gwt 2.5.1 を 2.6 にアップグレードしましたが、スーパー開発モードが開始されて以来、myApp:9876 にブックマークレットが表示され、モジュールがロードされますが、[開発モード オン] をクリックしても [コンパイル] ボタンがありません。コード サーバーは正常にロードされ、順列がコンパイルされていることがわかります。

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 構成: ここに画像の説明を入力

4

1 に答える 1

8

私の同僚がこの問題の真相にたどり着きました。主な問題は、2.6 で https を介して superdevmode を無効にすることでした。これは、以前のリリースには当てはまりませんでした。https を介して GWT 2.6 で動作する superdevmode とソース マップを取得するための調整のリストを次に示します。

  1. SSL ページで有効なカスタム リンカーを定義します。

    public class MyLinker extends 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 codeserver がパスにあることを確認してください。

いつか誰かが役に立つと思って答えを投稿してください。

于 2014-10-01T17:26:41.150 に答える