JavaFX WebView Erstellung nicht möglich

lam_tr

Top Contributor
Hallo zusammen,

warum kann ich keine WebView oder HTMLEditor laden?

Sobald ich meine JavaFX Application mit einer der beiden Elemente starte, bekomme ich die folgende Exception

Code:
Caused by: java.lang.IllegalStateException: Not on FX application thread; currentThread = JavaFX-Launcher
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:236)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423)
    at javafx.scene.web.WebEngine.checkThread(WebEngine.java:1243)
    at javafx.scene.web.WebEngine.<init>(WebEngine.java:879)
    at javafx.scene.web.WebEngine.<init>(WebEngine.java:868)
    at javafx.scene.web.WebView.<init>(WebView.java:273)
    at javafx.scene.web.WebViewBuilder.build(WebViewBuilder.java:60)
    ... 32 more

Scheint irgendwie ein Bug zu sein.

https://bugs.openjdk.java.net/browse/JDK-8087718

Ich meine irgendwann mal eine WebView starten zu können, ohne Probleme.

Hat hier jemand eine Lösung für mich?

Ich benutze aktuell Java 8.0.144

Viele Grüße
lam
 
Die einfachsten Lösung dürfte sein, das in den Application Thread zu verlagern mit Platform.runLater

Beim verlinkten Ticket steht ja ne Erklärung, warum das (noch) so ist 😉
 
Kannst ja mal deinen Code zeigen, dann wüssten wir vielleicht noch besser, warum das so ist. der Bug behandelt ja das Thema, wenn das Control nicht auf dem UI erstellt wird (während des inits der Klasse). Ich habe bei mit den WebView in FXML eingebettet und da klappt es eigentlich wunderbar.
 
Hallo dzim,

ich habe die WebView im FXML und im Code versucht hinzuzufügen, beide Varianten funktionieren nicht. Ich habe gelesen, dass sobald die WebView nicht in der JavaFX Application Klasse angelegt wird, dann kommt diese Exception.

Die Variante von mrBrown kann man das Problem gut umgehen.

Grüße
lam
 
Es scheint einfach wichtig zu sein, dass die erste Initialisierung auf dem JavaFX-Haupt-Thread durchgeführt wird (z.B. via Platform#runLater). Wie gesagt: Ich habe es schon in einer handvoll Projekten erfolgreich verwendet, daher wundert es mich etwas. Hast du etwas Code zum zeigen?

Ich hab in meinem Repo auch ein kleines Beispiel - schon lange nicht mehr ausprobiert, aber es müsste ja noch gehen:
FXML: https://github.com/bgmf/poc/blob/master/simple-tests-fx/src/main/resources/fxml/WebViewTest.fxml
Controller: https://github.com/bgmf/poc/blob/ma...a/eu/dzim/tests/fx/WebViewTestController.java

In der Main Klasse (https://github.com/bgmf/poc/blob/master/simple-tests-fx/src/main/java/eu/dzim/tests/fx/Main.java) noch das entsprechende FXML eintragen...

Bei mir geht's, aber vielleicht ist dein Erstellungsprozedere des WebViews ja wirklich so anders...
 

Zurück
Oben