私はswingアプリケーションを持っており、その中にjavafx2 jdk1.7_17からJFXpanelを追加しました(1.7_15も試しました)。私はEDTでJFXpanelを作成し、スイングタブ付きペインに追加してから、ドキュメントに示されているようにjavaFXスレッドでシーンをFXPanelに追加します。すべて問題なくアプリケーションを実行すると、アプリケーションを停止して再度実行すると、問題のあるフレーム libdbus と言って jvm がクラッシュします。何度試してもアプリケーションを閉じた後、通常はdbusについて不平を言ってjvmがクラッシュしますが、常にではありません:
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.
PCを再起動すると、最初は正常に動作し、閉じて再実行すると、起動時にクラッシュし続けます。私はfedora 18を実行していますが、Java FXはネイティブライブラリを使用しているため、おそらくOSに関連していると思います。
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 に切り替えたところ、すべて問題ありませんでした。OSの問題に固有のものだと思います。Java fx を使用せずに jdk 7 を使用すると、jvm クラッシュが引き続き発生する可能性があります。
jvmがクラッシュする原因を誰かが知っているなら、私は感謝します。前もって感謝します
更新 2
同様の投稿が見つかりました。解決されたようですが、よくわかりません: http://ubuntuforums.org/showthread.php?t=1697231&page=3 これを jvm 引数 -XX:-UseCompressedOops に使用します。もうクラッシュしないことを確認したら、回答として投稿します。
アップデート 3
解決できませんでした。解決策として javafx コードをコメントアウトしました。EDT に関連していると思いますが、保証はできません。JavaFx パネルが swing アプリに追加された後、数行発生しているようです。常に同じ行にあるとは限りません。すべてを削除すれば機能するので、まだ未熟なプロジェクトだと思います。