Пытаюсь портировать десктопное SWT
-приложение на Ubuntu
. Загрузил Eclipse Neon (6.4.2)
для Ubuntu и swt-4.6.2-gtk-linux-x86_64.zip
, настрроил путь к библиотеке в project build path
, чтобы он указывал на swt.jar
из загруженного zip-файла.
Eclipse
работает нормально, приложение компилируется, но падает при попытке выполнить следующую строку кода:
Display display = Display.getDefault();
Это самый первый вызов SWT в программе.
Eclipse пишет на консоль такой сообщение:
(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. Под Windows
приложение работает нормально.
Странно, но собранное под Windows
приложение (в Jar со всеми нужными версиями SWT и jar-in-jar loader'ом) дважды запустилось на Ubuntu (не вполне нормально, но это естественно - нужна некоторая адаптация конкретно под GTK), а третий и последующие разы - такое же падение с таким же сообщением.
Перезагрузка Ubuntu и SWT_GTK3=0
ничего не меняют.
В чем может быть причина? Куда примерно хотя бы рыть? (я в линуксах совершенный новичок).
PS Ubuntu
работает в Hiper-V
под W2008
, если это может иметь отношение к делу ...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Реализовать программу заказа товаровКак реализовать само приложение, знаю