org.eclipse.swt.SWTError: больше не нужно обрабатывать [gtk_init_check ()] при запуске eclipse в ubuntu


24

Я пытался открыть eclipse в своей виртуальной машине Ubuntu с помощью следующей команды. И как только я это делаю, я всегда получаю следующее исключение -

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

Если он не установлен или является неправильной версией, то выполните a sudo apt-get install gtkили сделайте sudo apt-get update.

РЕДАКТИРОВАТЬ

Проблема заключалась в том, что SSH использовал SSH для удаленного доступа к виртуальной машине Linux, и на нем не был установлен X-сервер в Windows и не была включена переадресация X11. После того, как это было исправлено, у OP не должно быть проблем с Eclipse.


Я обновил свой вопрос фактической информацией о версии. Дайте мне знать, если мне все еще нужно сделать обновление?
— SSH

Ну, есть версия 3.8 для gtk, так что не повредит обновить ее до последней версии.
— Джайт

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?
— Джайт

Он сделал много вещей ... И целая куча вещей была распечатана на моем экране ... Не уверен, что вас может заинтересовать?
— SSH

10

Это также ошибка, которую вы получите, если попытаетесь запустить Eclipse через ssh без переадресации X-доступа. Т.е. вы забыли запустить ssh -X user@hostили забыли включить ForwardX11 yesв свою ~/.ssh/configзапись для сервера.

Я добавляю этот ответ для всех, кто может наткнуться на этот вопрос из поиска в Google, хотя технически OP спрашивает о случае виртуальной машины.


@isakbob Спасибо, это решило мою проблему. Не смог найти ответ нигде. Могу хотеть опубликовать это как ответ.
— Матфея

@ Матвей Я не думаю, что мой комментарий заслуживает другого ответа. Я только отредактировал этот ответ, чтобы включить мой комментарий.
— Исакбоб

@isakbob не похоже, что он больше там
— Мэтью

@ Матфея ¯ \ _ (ツ) _ / ¯ полагаю, тогда это считается здравым смыслом.
— Исакбоб

6

Кроме того, это также может быть вызвано тем, что приложение не имеет правильной авторизации для отображения на удаленном компьютере X server. Обычно это происходит, когда вы входите в сеанс ssh от имени одного пользователя и выполняете команду от имени другого пользователя для запуска приложения с графическим интерфейсом. Например, когда вы входите на удаленный сервер и выполняете sudoкоманду. Чтобы решить эту проблему, вам нужно получить волшебный куки-файл пользователя, вошедшего в систему, и импортировать куки-файл для пользователя, выполняющего команду.

Как пользователь, входящий на сервер, который имеет полномочия на отображение X, запустите:

xauth extract cookie_file $DISPLAY

Тогда как пользователь пытается запустить графический интерфейс: xauthслияниеcookie_file

После того, как печенье импортируется в пользователя. Xauthorityфайл, вы должны быть в состоянии выполнить графический интерфейс.


Также возможно, что у хоста просто нет дисплея вообще. В этом случае вы можете установить Xvfb и создать виртуальный буфер кадров с командами: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 источник
— 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) от имени пользователя root с помощью 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файл root .

Как пользователь 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 with 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.