从JavaScript到Java进行调用时出现不可恢复的堆栈溢出错误

Jea*_*ets 5 javascript java stack-overflow javafx

我遇到了一个"不可恢复的堆栈溢出错误",我无法弄清楚.从文档:您需要创建一个接口对象(任何类)并通过调用使其为JavaScript所知JSObject.setMember().

这是Java代码共享和使用接口对象:

// somewhere in the code
JSObject window = (JSObject) engine.executeScript("window");
window.setMember("foo", new Foo()); // <-- shares
window.call("testFoo");             // <-- uses

// somewhere else
class Foo {
    public void bar() {
        System.out.println("baz");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是使用该对象的JavaScript代码:

window.testFoo = function() {
    window.foo.bar();
}
Run Code Online (Sandbox Code Playgroud)

如果我像上面的show一样手动触发它,或者如果我通过一些JavaScript事件触发它,就会发生这种情况.

Jea*_*ets 1

答案在评论中,我不敢相信我已经尝试了几个小时的所有方法,而且这是一个非常快速的修复。

事实证明,暴露的接口必须是public 的