JxBrowser 6挂在osx el capitan

时间:2016-06-15 14:47:07

标签: java javafx chromium jxbrowser

我正在评估JxBrowser 6.4作为我们应用程序的浏览器引擎。我们需要我们的软件才能在Window和OSX上运行。当我尝试为JxBrowser 6运行javafx示例时,它只是挂起(没有窗口出现)。没有例外,应用程序只是挂起而没有任何UI。

这里是代码(从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上运行得非常好。

1 个答案:

答案 0 :(得分:1)

请使用JxBrowser文档page中的示例,该示例描述了如何在JavaFX应用程序中使用JxBrowser。这是一个例子:

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);
    }
}