Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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
从JavaScript调用Java函数_Java_Javascript_Javafx 2_Javafx - Fatal编程技术网

从JavaScript调用Java函数

从JavaScript调用Java函数,java,javascript,javafx-2,javafx,Java,Javascript,Javafx 2,Javafx,我试图使用JavaFX调用Java函数作为JavaScript的回调。 首先,我在初始化期间添加了Java类作为window的成员: JSObject jsobj = (JSObject) currentWebEngine.executeScript("window"); jsobj.setMember("java", this); Java请求函数在平台.runLater()中描述如下: 在javascript端完成异步请求后,它应该调用java函数来返回结果。然而,我在这方面有例外。我甚至

我试图使用JavaFX调用Java函数作为JavaScript的回调。 首先,我在初始化期间添加了Java类作为window的成员:

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);
Java请求函数在
平台.runLater()中描述如下:

在javascript端完成异步请求后,它应该调用java函数来返回结果。然而,我在这方面有例外。我甚至尝试过在没有参数的情况下调用函数,但仍然不起作用:

window.java.returnResult();
但我有以下例外:

runnable中的异常 netscape.javascript.JSException:TypeError:“undefined”不是对象

它与异步请求无关,因为我甚至尝试在makeRequest()函数中直接调用它,但得到了相同的错误。 知道我在那方面做错了什么吗?
前面的代码集成在桌面JFrame应用程序中,而不是小程序中。

使用DWR,您可以通过JavaScript使用java方法。

我设法找到了问题的解决方案。以下代码调用得有点早,因此该类未在javascript中注册:

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);

我刚在web引擎的侦听器中调用了它,它就工作了。

据我所知,DWR需要Java服务器与web浏览器通信。这不是我的目标。我有一个Swing桌面应用程序,它使用JavaFX嵌入了JavaScript。这个示例演示了WebView到Java回调的过程吗?
JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);