1

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 アプリを実行する方法についてのアイデアはありますか?

ありがとう

4

1 に答える 1