Я пытаюсь выполнить javascript в WebView и получить вывод.Это работает, но я получаю сообщение об ошибке при попытке выполнить это в потоке:
@FXML
private void handleButtonAction(ActionEvent event) throws InterruptedException {
int x = this.test();
System.out.print(x);
}
private int test()
{
return (Integer) engine.executeScript("function x(){return 3}; x();");
}
Дает вывод '3' и не выдает исключение, но при выполнении:
public void exampleThread() {
Thread one = new Thread() {
public void run() {
while (true) {
try {
System.out.println("Does it work?");
Thread.sleep(1000);
int y = test();
System.out.println("Nope: "+y);
} catch (InterruptedException v) {
System.out.println(v);
}
}
}
};
one.start();
}
Выдает:
Исключение в потоке "Thread-12" java.lang.IllegalStateException: Нет в потоке приложения FX;currentThread = Thread-12 в com.sun.javafx.tk.Toolkit.checkFxUserThread (Toolkit.java:279) в com.sun.javafx.tk.quantum.web.WebEngine.checkThread (WebEngine.java:1243) в javafx.scene.web.WebEngine.executeScript (WebEngine.java:1003) в testApp.FXMLDocumentController.test (FXMLDocumentController.java:91) в testApp.FFXMLDocumentController.java:28) at testApp.FXMLDocumentController $ 1.run (FXMLDocumentController.java:76)
Кто-нибудь знает, что здесь происходит?