1

WebEngine をヘッドレス ブラウザとして使用しようとしています。これは、Java の公式ドキュメント の例を厳密に模倣した概念実証です。

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 状態または何らかのエラー状態で終了する必要があります。)

4

1 に答える 1

1

同じ問題がありました。コメントにあるリンクが役に立ちました。start メソッドの外で Web エンジンを宣言するだけです。そうしないと、GC が処理します。

于 2016-03-31T19:27:36.677 に答える