org.eclipse.swt.SWTError: більше запуску [gtk_init_check () не вдалося] під час запуску eclipse на ubuntu


24

Я намагався відкрити затемнення в моїй програмі Ubuntu VM із наведеною нижче командою. І як тільки я це роблю, я завжди отримую нижчий виняток -

ubuntu@username-dyn-vm1-48493:~$ eclipse
Eclipse:
An error has occurred. See the log file
/home/ubuntu/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1381367113197.log.

тому коли я перейшов до конкретного файлу журналу, це те, що я бачу в журналі -

ubuntu@username-dyn-vm1-48493:~$ more /home/ubuntu/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1381367113197.log
!SESSION 2013-10-10 01:05:13.088 -----------------------------------------------
eclipse.buildId=debbuild
java.version=1.7.0_25
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.osgi 4 0 2013-10-10 01:05:17.555
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
        at org.eclipse.swt.SWT.error(SWT.java:4387)
        at org.eclipse.swt.widgets.Display.createDisplay(Display.java:914)
        at org.eclipse.swt.widgets.Display.create(Display.java:900)
        at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:498)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:489)
        at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:716)
        at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
        at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:154)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:96)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1414)

Хтось знає, що трапилось? Або що я повинен зробити, щоб виправити це питання? Спасибі..

Оновлення: -

Деталі версії нижче -

ubuntu@username-dyn-vm1-48493:~$ dpkg -l libgtk[0-9]* | grep ^i
ii  libgtk2.0-0:amd64                   2.24.17-0ubuntu2                    amd64        GTK+ graphical user interface library
ii  libgtk2.0-bin                       2.24.17-0ubuntu2                    amd64        programs for the GTK+ graphical user interface library
ii  libgtk2.0-common                    2.24.17-0ubuntu2                    all          common files for the GTK+ graphical user interface library

Як не дивно, у мене були подібні проблеми, намагаючись запустити dbeaver. Спочатку я повинен був вийти з tmux, щоб він працював належним чином. Одд
matchew

Відповіді:


4

Я думаю, це проблема з gtk. Перевірте, яка версія встановлена.

dpkg -l libgtk[0-9]* | grep ^i

Якщо він не встановлений або це неправильна версія, тоді зробіть sudo apt-get install gtkабо зробіть sudo apt-get update.

EDIT

Проблема полягала в тому, що SSH використовував SSH для віддаленого доступу до Linux VM, у нього не було налаштовано сервер X у Windows та не було включено переадресацію X11. Після виправлення цього в ОП не повинно виникнути жодних проблем із запуском Eclipse.


Я оновив своє запитання фактичною інформацією про версію. Повідомте, чи все-таки мені потрібно зробити оновлення?
СШ

Ну, є версія 3.8 для gtk там, тому не вдасться перешкодити оновленню до останньої версії.
Jeight

3
Я бачу .. Але коли я його оновив, це те, що я отримав - sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Він не в змозі якось знайти пакет gtk .. Будь-яка ідея?
SSH

Що ви отримуєте, коли робите sudo apt-cache search gtk?
Jeight

Це робило багато речей. І на моєму екрані було надруковано цілу купу речей. Не знаєте, що вас може зацікавити?
SSH

10

Це також помилка, яку ви отримуєте, якщо спробувати запустити Eclipse через ssh, не пересилаючи доступ X. Тобто, ви забули запустити ssh -X user@hostабо забули включити ForwardX11 yesу свій ~/.ssh/configзапис для сервера.

Я додаю цю відповідь для всіх, хто може натрапити на це запитання від пошуку в Google, хоча технічно ОП запитує про випадок ВМ.


@isakbob Дякую, це вирішило мою проблему. Не вдалося знайти відповіді більше ніде. Можливо, ви хочете опублікувати це як відповідь.
Матвій

@Matthew Я не думаю, що мій коментар вимагає іншої відповіді. Я просто відредагував цю відповідь, щоб включити свій коментар.
isakbob

@isakbob не схоже, що його вже немає
Метью

@Matthew ¯ \ _ (ツ) _ / ¯ здогадується, тоді це вважається здоровим глуздом.
isakbob

6

Крім того, це також може бути спричинене тим, що програма не має належного дозволу на відображення на віддалений X server. Зазвичай це відбувається, коли ви входите в сеанс ssh як один користувач і виконуєте команду як інший користувач для запуску програми GUI. Наприклад, коли ви входите на віддалений сервер і виконуєте sudoкоманду. Щоб вирішити цю проблему, вам потрібно буде отримати чарівний файл cookie користувача та імпортувати файл cookie для користувача, який виконує команду.

Оскільки користувач увійшов на сервер, який має право відображати X:

xauth extract cookie_file $DISPLAY

Тоді як користувач намагається запустити gui: xauthmergecookie_file

Після того, як файли cookie імпортуються в користувача. Xauthorityфайл, ви повинні мати можливість виконати графічний інтерфейс.


Також можливо, що хост просто не має дисплея. У цьому випадку ви можете встановити Xvfb і створити віртуальний буфер кадру з командами: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek

3

Я зіткнувся з подібною проблемою під час встановлення IBM Installation Manager (IBMIM) на CentOS 6.x і обійшов проблему, встановивши кілька пакунків, які стали причиною цієї ідентичної помилки:

$ sudo /opt/IBM/InstallationManager/eclipse/IBMIM \
       -record /root/was8nd_v85_install.xml \
       -skipInstall /tmp/was8nd

00:00.46 ERROR [main] org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory safeLogged
  Application error
  org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
  org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
    at org.eclipse.swt.SWT.error(SWT.java:4387)
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:913)
    at org.eclipse.swt.widgets.Display.create(Display.java:899)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
    ...
IBMIM:
An error has occurred. See the log file
/opt/IBM/InstallationManager/eclipse/configuration/1457978953529.log.

Частина 1 рішення - відсутні пакети

$ sudo yum install \
   gtk2            \
   libXtst         \
   gnome-desktop   \
   xorg-x11-xauth  \
   dejavu-lgc-sans-fonts 

Щось подібне до цього могло бути зроблено і на Ubuntu.

Розв’язання частина 2 - xauth

Інша проблема, яка виникає, - ви намагаєтеся запустити інсталятор IBMIM (заснований на Eclipse) як основний користувач через sudo. Зробивши це, ви отримаєте вищевказану помилку програми від інсталятора:

00:00.46 ERROR [main] org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory safeLogged
  Application error
  org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
  org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]

Щоб вирішити цю проблему, вам потрібно буде xauth addдодати початкового користувача, до якого ви увійшли, як $HOME/.Xauthorityфайл кореня .

Як користувач1:

$ xauth list
ip-10-10-10-10.us-west-1.compute.internal/unix:10  MIT-MAGIC-COOKIE-1  6902e8c245a01ca50XXXXXXXXXXXXXXXX

Потім як корінь:

$ xauth add ip-10-10-10-10.us-west-1.compute.internal/unix:10  MIT-MAGIC-COOKIE-1  6902e8c245a01ca50XXXXXXXXXXXXXXXX
xauth:  creating new authority file /root/.Xauthority

$ xauth list
ip-10-10-10-10.us-west-1.compute.internal/unix:10  MIT-MAGIC-COOKIE-1  6902e8c245a01ca50XXXXXXXXXXXXXXXX

Список літератури


0

Якщо ви працюєте на Linux з Gnome:

Запустіть Gnome із сеансу Xorg:

Після натискання свого імені користувача в GDM (менеджер з привітанням / входом), натисніть своє ім'я користувача та перед тим, як ввести пароль, натисніть на маленьку передачу та виберіть Gnome з Xorg, а потім введіть свій пароль


-1

Після відключення IPV6 на віддаленій машині я отримав повідомлення org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]при використанні команди ssh -X ub-dev /opt/eclipse/eclipse. Щоб виправити Ubuntu 14.04, я додав рядок AddressFamily inetдо файлу /etc/ssh/sshd_configта перезапустив ssh sudo service ssh restart.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.