Ich versuche, eine SWT-Desktop-Anwendung auf Ubuntu zu portieren. Habe Eclipse Neon (6.4.2)
für Ubuntu und swt-4.6.2-gtk-linux-x86_64.zip
heruntergeladen, konfigurierte Bibliotheken im Projektbuild-Pfad, um von der heruntergeladenen swt-zip auf die Datei swt.jar zu verweisen.
Eclipse-funktioniert gut, wird die Anwendung kompiliert, sondern stürzt bei dem Versuch, die folgende Zeile des Codes auszuführen:Eine Desktop SWT-Anwendung wird nicht unter Eclipse in Ubuntu
Display display = Display.getDefault();
Es ist der erste Aufruf an die SWT im Programm.
Eclipse-schreibt die folgende Meldung auf der Konsole:
(SWT:3351): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplayManager'
(SWT:3351): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed
(SWT:3351): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed
(SWT:3351): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(SWT:3351): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(SWT:3351): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(SWT:3351): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(SWT:3351): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplay'
(SWT:3351): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed
(SWT:3351): GLib-GObject-CRITICAL **: g_type_register_static: assertion 'parent_type > 0' failed
(SWT:3351): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed
(SWT:3351): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f729ae932b7, pid=3351, tid=0x00007f72e24aa700
#
# 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 [libgdk-x11-2.0.so.0+0x4e2b7] gdk_display_open+0x57
#
Ubuntu 16.04 LTS. Unter Windows funktioniert die Anwendung einwandfrei. Was kann der Grund sein und wie kann ich es beheben?
PS
Eine ziemlich seltsame Sache. Wenn es außerhalb des Ubuntu gepackt wird (unter Windows zusammen mit dem Linux SWT und Jar-in-Jar Loader), beginnt dieses Jar unter Ubuntu zu arbeiten, außer dem Datei-Öffnen-Dialog, der nur ein leeres Fenster anstelle des Dialog. Es verhält sich so 2 (zwei) mal. Das dritte Mal, wenn ich es starte, zerquetscht es erneut mit der gleichen Nachricht ((SWT:3351): GLib-GObject-WARNING
usw.). Das Neustarten von Ubuntu und das Setzen von `SWT_GTK3 = 0 'haben keine Auswirkungen.
PPS
Ubuntu ist in Hyper-V unter Windows2008 läuft, wenn es darauf ankommt ...
SWT erfordert -uncommon in Java - native Bibliothek, zum Beispiel .so –
@JacekCz Meinst du ich sollte diesen Parameter zu den jvm-Argumenten in Eclipse-Einstellungen hinzufügen? –
irgendwo ist Pfad (Betriebssystempfad - nicht javapath) sollte swt-xxxxx.so –