0

GWT Elemental の例 (GWT 2.5.1 リポジトリから) を実行しようとしていますが、実行時に例外が発生します。これを実行するには、コードにいくつかの変更を加える必要がありました。これは、サンプル コードに反映されていない Elemental への変更の結果であると推測しています。これがコードで、私の変更が記録されています:

@Override
public void onModuleLoad() {
  final ButtonElement btn = getDocument().createButtonElement();
  btn.setInnerHTML("w00t?");
  btn.getStyle().setColor("red");
  getDocument().getBody().appendChild(btn);
  final DivElement div = getDocument().createDivElement();
  getDocument().getBody().appendChild(div);
  EventListener listener = new EventListener() {
    @Override
    public void handleEvent(Event evt) {
      final XMLHttpRequest xhr = getWindow().newXMLHttpRequest();
      xhr.setOnload(new EventListener() {
        @Override
        public void handleEvent(Event evt2) {
          div.setInnerHTML(xhr.getResponseText());
        }
      });
      xhr.open("GET", "/snippet.html");
      xhr.send();
      getWindow().setTimeout(new TimeoutHandler() { // *** changed from "new Window.TimerCallback()"
        @Override
        public void onTimeoutHandler() { // *** changed from "public void fire()"
          getWindow().alert("timeout fired");
        }
      }, 1000);
      btn.removeEventListener(Event.CLICK, this, false);
    }
  };
  btn.addEventListener(Event.CLICK, listener, false);
}

元のコードはElementalExample.javaです。

例外は次の行で発生しています: btn.addEventListener(Event.CLICK, listener, false);JavaScript ライブラリの 1 つの null オブジェクトが原因のようです。呼び出しをコメントアウトするbtn.addEventListener()と、ブラウザにページが表示され、ボタンが表示されます (もちろん、イベント リスナーがないため、機能しません)。他の誰かがこの例を実行しようとしましたか? もしそうなら、GWT の最新リリースで実行するためのヒントはありますか?

スタック トレースは次のとおりです。

com.google.gwt.core.client.JavaScriptException: (String) : Invoking an instance method on a null instance
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
 at java.lang.reflect.Constructor.newInstance(Unknown Source)
 at com.google.gwt.dev.shell.ModuleSpace.createJavaScriptException(ModuleSpace.java:80)
 at com.google.gwt.dev.shell.ModuleSpace.createJavaScriptException(ModuleSpace.java:64)
 at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:60)
 at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
 at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
 at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
 at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
 at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
 at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
 at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
 at elemental.js.dom.JsElementalMixinBase$.addEventListener$(JsElementalMixinBase.java)
 at com.google.gwt.core.client.JavaScriptObject$.elemental_html_ButtonElement_addEventListener(JavaScriptObject.java)
 at org.greatlogic.elementalfile.client.ElementalFileEntryPoint.onModuleLoad(ElementalFileEntryPoint.java:48)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:406)
 at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
 at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
 at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
 at java.lang.Thread.run(Unknown Source)

(コードを自分のプロジェクトに貼り付けたので、org.greatlogic.elementalfile.client.ElementalFileEntryPointクラス名に注意してください)。

4

0 に答える 0