java - 从 JavaScript 调用 Java 时出现不可恢复的 stackoverflow 错误

标签 java javascript javafx stack-overflow

我遇到了一个我无法弄清楚的“不可恢复的堆栈溢出错误”。来自docs : 您需要创建一个接口(interface)对象(任何类的)并通过调用 JSObject.setMember() 让 JavaScript 知道它。

下面是 Java 代码共享和使用接口(interface)对象:

// 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");
    }
}

下面是使用该对象的 JavaScript 代码:

window.testFoo = function() {
    window.foo.bar();
}

如果我像上面显示的那样手动触发它,或者如果我通过一些 JavaScript 事件触发它,它就会发生。

最佳答案

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

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

关于java - 从 JavaScript 调用 Java 时出现不可恢复的 stackoverflow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29624094/

相关文章:

java - 安卓聊天客户端

JavaFX 更改进度指示器下的文本

listview - 行颜色javafx listview

java - 填充 java fx 表时出现空指针异常

javascript - 如何使用 react ref 从 html select 元素中获取值?

javascript - 使用 JavaScript 展平 DOM 中的嵌套跨度以优化 HTML 编辑器输出

java - Spring Data Rest 资源处理失败

java - PipedInputStream 和 PipedOutputStream 中的异常传播

java - SparkSQL 插入 Hive 表失败

javascript - 在 JSON 对象中创建属性的变量名称