Ho riscontrato un "errore di overflow dello stack irreversibile" che non riesco a capire. Da docs: è necessario creare un oggetto di interfaccia (di qualsiasi classe) e renderlo noto a JavaScript chiamando JSObject.setMember()
.Errore irreversibile di stackoverflow durante l'esecuzione di richiami da JavaScript a Java
Ecco la condivisione di codice Java e utilizzando l'oggetto di interfaccia:
// 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");
}
}
Ed ecco il codice JavaScript utilizzando quell'oggetto:
window.testFoo = function() {
window.foo.bar();
}
Si verifica se mi innescare manualmente come esposizione qui sopra, o se lo faccio scattare attraverso qualche evento JavaScript.
L'ho provato e funziona per me (Java 1.8.0_11). Forse sarebbe d'aiuto se tu pubblicassi un [SSCCE] (http://sscce.org/). –
Penso che Foo dovrebbe essere pubblico, altrimenti mi sembra OK (senza provarlo). Il documento che colleghi è un vecchio post del blog basato su una precedente anteprima dello sviluppatore. Documentazione più moderna è disponibile per [Java 8] (http://docs.oracle.com/javase/8/javafx/embedded-browser-tutorial/js-javafx.htm). – jewelsea
Mi piace il modo in cui è stato utilizzato lo stackoverflow per ottenere assistenza durante il recupero da un errore StackOverflow irrecuperabile. – jewelsea