Eclipseはコンテナ内で正常に動作しており、そのウィンドウはホスト上で表示されます(X11はソケットで共有されます)。Dockerコンテナ内のEclipse内でJavaFX GUIアプリケーションを実行すると致命的なエラーが発生する
このアプリはJavaFX(EfxclipseとM2Eclipse)を使用したEclipse RCPプロジェクトです。以下のRCPのリファレンスをすべて削除しました。この例では複雑さが少なく、本当にシンプルなJavaFXアプリケーション(非OSGI)でも発生するため、OSGIは発行者ではありません。
Eclipse内で(Dockerコンテナ内で)JavaFX GUIアプリケーションを実行すると、次のような致命的なエラーが発生しています。
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f56bb14dd20, pid=233, tid=0x00007f567cea1700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_111-b14) (build 1.8.0_111-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.111-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [ld-linux-x86-64.so.2+0x9d20]
#
# Core dump written. Default location: /home/docker/test/JavaFX/login/core or core.233
#
# An error report file with more information is saved as:
# /home/docker/test/JavaFX/login/hs_err_pid233.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
完全ログはhereです。
ホストの詳細は:
- のUbuntu 16.10
- ドッカーバージョン1.12.3、コンテナがの詳細を
6b644ec
- のUbuntu 16.04
- OracleのJDK 1.8.0_111 64-ビット
- EclipseのルナE(FX)と(RCP 4.4.2)ザ・クリプス1.2.0.201501301049
- Dockerfile
コードJavaFXのアプリ用:
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Scene scene = new Scene(new BorderPane(),400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
スイングを使用して簡単なGUIアプリケーションを実行しても成功しましたが、
package application; import javax.swing.JFrame; import javax.swing.JLabel; public class Test { private static void createAndShowGUI() { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 500); JLabel label = new JLabel("Test"); frame.getContentPane().add(label); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
これはJavaFXに関連する問題を引き起こします。
エクスポートされたJavaFXアプリケーション(Jarファイルとして)をコンソール(Eclipse外)で実行しても、同じエラーが返されます。
これを解決し、JavaFXアプリケーションをコンテナ内のEclipse内で実行する方法についてのアイデアはありますか?
可能なdup:http://stackoverflow.com/q/16296753/18157 - 私はDockerがOPの質問に答えるかどうかを十分に知らないので、dup-hammeringではありません。 –
@ JimGarrisonに感謝してくれてありがとうございますが、重複しているわけではありません。 Eclipseはコンテナ内でうまく動作しています(ソケットを介してXを共有しています)。問題はJavaFXアプリケーションだけです。 – wcomnisky
クラッシュ問題フレーム:#C [ld-linux-x86-64.so.2 + 0x9d20]は、glibcの問題の詳細を示し、正確なパスを指し、アプリケーションを再実行します – Fairoz