Eclipse はコンテナー内で正常に動作しており、そのウィンドウはホスト上で表示されます (X11 はソケットを介して共有されています)。
このアプリは、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
#
完全なログはここにあります。
ホストの詳細:
- Ubuntu 16.10
- Docker バージョン 1.12.3、ビルド 6b644ec
コンテナの詳細:
- Ubuntu 16.04
- Oracle JDK 1.8.0_111 64 ビット
- Eclipse Luna (RCP 4.4.2) と e(fx)clipse 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);
}
}
Swing を使用して単純な GUI アプリを実行することに成功しましたが、
パッケージ アプリケーション; javax.swing.JFrame をインポートします。 javax.swing.JLabel をインポートします。 パブリック クラス テスト { private static void createAndShowGUI() { JFrame フレーム = 新しい JFrame("テスト"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 500); JLabel label = new JLabel("テスト"); frame.getContentPane().add(ラベル); frame.setVisible(真); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
これにより、JavaFX に関連する問題が発生します。
エクスポートされた JavaFX アプリを (Jar ファイルとして) コンソール (Eclipse の外部) で実行しても、同じエラーが返されます。
それを解決し、コンテナー内の Eclipse 内で JavaFX アプリを実行する方法についてのアイデアはありますか?
ありがとう