Java GWT,元素,工作者:空实例
使用GWT和elemental,我对空实例有一些问题。以下是代码:Java GWT,元素,工作者:空实例,java,gwt,worker,Java,Gwt,Worker,使用GWT和elemental,我对空实例有一些问题。以下是代码: import elemental.events.Event; import elemental.events.EventListener; import elemental.html.Window; import elemental.html.Worker; public void go() { Window window=elemental.client.Browser.getWindow(); Worker
import elemental.events.Event;
import elemental.events.EventListener;
import elemental.html.Window;
import elemental.html.Worker;
public void go()
{
Window window=elemental.client.Browser.getWindow();
Worker worker=window.newWorker("task.js");
EventListener eventListener=new EventListener()
{
@Override
public void handleEvent(Event event)
{
}
}
System.out.println("worker : "+worker+" eventListener : "+eventListener+" window : "+window);
worker.setOnmessage(eventListener);
}
显示器为:
worker : [object Worker] eventListener : mainpackage.client.MainClass$1@565f81ea window : [object Window]
因此worker不是null,但我在setOnmessage中有一个错误:
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:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at elemental.js.html.JsWorker$.setOnmessage$(JsWorker.java)
at com.google.gwt.core.client.JavaScriptObject$.elemental_html_Worker_setOnmessage(JavaScriptObject.java)
at mainpackage.client.MainClass.go(MainClass.java:41)
at mainpackage.client.Testthread.onModuleLoad(Testthread.java:30)
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:411)
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)
为什么会有空实例?我该如何解决这个问题?提前谢谢
com.google.gwt.core.client.JavaScriptException: (String) : Invoking an instance method on a null instance
这句话有答案
当您试图调用
worker.setOnmessage(eventListener)代码>
worker
对象为空
因此,请检查您的newWorker
方法是否实际返回Worker
对象。我不明白为什么Worker对象为空。正如我所说,display是worker:[对象worker]。所以不是空不?我加上那个worker.postMessage(“”);没有显示任何错误。您是打印工作对象,但确保它有值或没有。所以空对象不只是C++中的NULL那么糟糕。承认它是空的,我怎么能使它不是空的?task.js是一个合适的位置。工人的代码与此处相同。感谢您的帮助。为此,请确保您的.js
必须与您的类位于同一个包中,如果不是,则需要提供如下路径,例如“window.newWorker(“C:\\Folder\\worker.js”);”
Worker worker=window.newWorker("task.js");