JxBrowser 6 зависает в OSX El Capitan

Я оцениваю JxBrowser 6.4 как движок браузера для нашего приложения. Нам нужно, чтобы наше программное обеспечение работало как в Windows, так и в OSX. Когда я пытаюсь запустить пример javafx для JxBrowser 6, он просто зависает (окно не появляется). Нет никаких исключений, и приложение просто зависает без какого-либо пользовательского интерфейса.

Вот код (скопирован из документации jxbrowser):

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JfxView extends Application {
    @Override
    public void start(Stage primaryStage) {
        Browser browser = new Browser();
        BrowserView browserView = new BrowserView(browser);

        StackPane pane = new StackPane();
        pane.getChildren().add(browserView);
        Scene scene = new Scene(pane, 400, 300);
        primaryStage.setScene(scene);
        primaryStage.show();

        browser.loadHTML("<html><body><h1>Hello world!</h1></body></html>");
    }

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

Последние несколько журналов выглядят следующим образом:

JxBrowser license valid.
08:10:02 INFO: OS name: Mac OS X
08:10:02 INFO: JRE version: 1.8.0_65 64-bit
08:10:02 INFO: JxBrowser version: 6.4
08:10:02 INFO: JxBrowser type: HEAVYWEIGHT
08:10:02 INFO: Starting IPC...
08:10:02 INFO: Starting IPC Server...
08:10:02 INFO: Starting socket server
08:10:02 INFO: Starting socket server at port 1101...
08:10:02 INFO: Starting IPC Process...

Пример Swing работает нормально, и тот же код отлично работает в Windows.


person Code freak    schedule 15.06.2016    source источник


Ответы (1)


Используйте пример из документации JxBrowser на странице который описывает, как использовать JxBrowser в приложении JavaFX. Вот пример:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserCore;
import com.teamdev.jxbrowser.chromium.internal.Environment;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

/**
 * Demonstrates how to embed Browser instance into JavaFX application.
 */
public class JavaFXSample extends Application {

    @Override
    public void init() throws Exception {
        // On Mac OS X Chromium engine must be initialized in non-UI thread.
        if (Environment.isMac()) {
            BrowserCore.initialize();
        }
    }

    @Override
    public void start(final Stage primaryStage) {
        Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);

        Scene scene = new Scene(new BorderPane(view), 700, 500);
        primaryStage.setScene(scene);
        primaryStage.show();

        browser.loadURL("http://www.google.com");
    }

    public static void main(String[] args) {
        launch(args);
    }
}
person Vladimir    schedule 17.06.2016