java fx jvm崩溃

时间:2013-03-20 17:00:24

标签: java linux jvm javafx java-7

我有一个swing应用程序,在里面我从javafx2 jdk1.7_17添加了一个JFXpanel(也试过1.7_15)。我在EDT中创建JFXpanel并将其添加到swing选项卡式窗格中,然后将该场景添加到javaFX线程中的FXPanel,如文档中所示。如果一旦一切正常我运行应用程序,如果我停止应用程序并再次运行它jvm崩溃说有问题的框架libdbus。关闭应用程序后无论我尝试多少次jvm都会崩溃抱怨dbus通常但不总是:

JRE version: 7.0_17-b02
Java VM: Java HotSpot(TM) 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops)
Problematic frame:
C  [libc.so.6+0x12fbd6]Java Result: 134

有时我得到这个:

 GConf-WARNING **: Got Disconnected from DBus.

如果我重新启动电脑,它第一次运行正常,然后如果我关闭/重新运行它会在启动时一直崩溃。我正在运行fedora 18,我相信它可能与OS相关,因为java FX使用本机库。

FXPanelJob fxPanelJob = new FXPanelJob(fxPanel);
tabbedPane = new JTabbedPane();
tabbedPane.addTab("table", fxPanel);
Platform.runLater(fxPanelJob);

private class FXPanelJob implements Runnable {

    private JFXPanel fxPanel;
    private volatile boolean done = false;

    public FXPanelJob(JFXPanel fxPanel) {
        this.fxPanel = fxPanel;
    }

    @Override
    public void run() {
        initFX(fxPanel);
        done = true;
    }

    private void initFX(JFXPanel fxPanel) {
        // This method is invoked on the JavaFX thread
        VBox vbox = new VBox();
        Scene scene = new Scene(vbox, 300, 200);
        TableView<ReportRaw> table = new Table();
        vbox.getChildren().addAll(table);
        VBox.setVgrow(table, Priority.ALWAYS);
        fxPanel.setScene(scene);
    }
}

自第一次运行以来,我猜测在应用程序退出时关闭javafx可能会出现问题。在windowClosing事件中我有:

Platform.runLater(new Runnable(){ public void run(){
         Platform.exit();
});

更新

事实证明它不是java fx问题,我切换到JDK 6,一切都很好。我认为这是针对操作系统问题的。使用没有java fx的jdk 7仍然可以触发jvm崩溃。

如果有人知道可能导致jvm崩溃的原因我会很感激。 提前谢谢

更新2

发现了一个类似的帖子,似乎已经解决但我不确定: http://ubuntuforums.org/showthread.php?t=1697231&page=3 将此用于jvm arguement -XX:-UseCompressedOops。当我确定它不再崩溃时,我会将其作为答案发布。

更新3

无法解决它我把我的javafx代码注释掉了。我相信它的EDT相关,但我不能保证。在swing应用程序上添加JavaFx面板之后,它似乎出现了几行。并不总是在同一条线上。如果删除一切正常,所以我猜它仍然是一个不成熟的项目。

0 个答案:

没有答案