好吧,这花了我很多时间来研究文档,教程和示例,并在这里和Rhino Google
Group上发布,但我设法编写了一个可行的解决方案。由于似乎没有完整的示例,因此我将在此发布我的发现,以供将来偶然发现此问题的任何人使用。
实际上,我的发现可能太长了,无法在此处发布,因此我决定在我的博客上写一个教程:
http://www.joshforde.com/blog/?p=7
希望能对某人有所帮助。据我所知,这是唯一完整的Rhino教程,显示了如何执行以下所有操作:初始化Rhino,从Javascript(*
.js)文件加载脚本,自动绑定特定Java类中的所有函数(例如scriptFunctions)作为Javascript中的全局函数,最后调用Javascript函数并处理该调用的延续。
基本上 ,问题是我需要先下载Mozilla
Rhino源代码(因为JDK附带的版本已过时并且不支持延续),重写我的所有代码以使用官方Rhino软件包的语法(这非常与JDK的scriptingEngine语法不同),编写一个抛出ContinuationPending异常并将其绑定到Javascript的Java函数,以便Javascript可以对其进行调用(因为直接从Javascript抛出ContinuationPending会导致抛出JavascriptException,而不是抛出ContinuationPending,甚至尝试在该JavascriptException上调用getCause()结果为null),然后在调用我的Javascript函数(在我的原始示例中为“
myJSFunction”)的Java代码中,使用try / catch块来检查ContinuationPending(这是一个例外)
,然后再使用该ContinuationPending继续执行脚本。
ew 这很艰难,但是现在都值得。



