【问题标题】:JavaFX's WebEngine gets stuck in RUNNING stateJavaFX 的 WebEngine 卡在 RUNNING 状态
【发布时间】:2014-12-26 02:39:25
【问题描述】:

我正在尝试将 WebEngine 用作无头浏览器。这是一个概念证明,它非常模仿 the example in the official Java documentation

import javafx.scene.web.*;
import javafx.application.*;
import javafx.stage.*;
import javafx.concurrent.Worker.*;
import javafx.beans.value.*;

public class WebEngineTest extends Application {
    public void start(Stage s) {
        WebEngine we = new WebEngine();

        //Print state changes as they happen;
        //Should go READY -> SCHEDULED -> RUNNING -> SUCCEEDED
        we.getLoadWorker().stateProperty().addListener(
                new ChangeListener<State>() {
                    public void changed(ObservableValue ov, State oldState, State newState) {
                        System.out.println(oldState + " -> " + newState);
                    }
                });

        //Hit some website
        we.load("http://javafx.com");
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出:

READY -> SCHEDULED
SCHEDULED -> RUNNING

SUCCEEDED 永远不会受到打击,也不会出现任何错误情况。 (预期的行为:任务最终应该以 SUCCEEDED 状态或某些错误条件终止。)

【问题讨论】:

  • 这与stackoverflow.com/questions/19298740/…密切相关。我怀疑根本原因可能是相同的。
  • 如果您明确说出您期望的行为(在这种情况下似乎应该打印成功),您更有可能获得帮助。不耐烦的读者可能会因为离题 -> 寻求调试帮助的问题...而结束
  • 我进行了编辑。谢谢你的建议。

标签: java javafx webkit javafx-webengine


【解决方案1】:

有同样的问题,你在 cmets 中的链接帮助了我。只需在 start 方法之外声明您的 Web 引擎,否则 GC 会处理它。

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多