Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT,元素,工作者:空实例_Java_Gwt_Worker - Fatal编程技术网

Java GWT,元素,工作者:空实例

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

使用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 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");