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
SSH
источник
как ни странно, у меня была похожая проблема при попытке запустить 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.

Jeight
источник
Я обновил свой вопрос фактической информацией о версии. Дайте мне знать, если мне все еще нужно сделать обновление?
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 спрашивает о случае виртуальной машины.

user837451
источник
@isakbob Спасибо, это решило мою проблему. Не смог найти ответ нигде. Могу хотеть опубликовать это как ответ.
Матфея
@ Матвей Я не думаю, что мой комментарий заслуживает другого ответа. Я только отредактировал этот ответ, чтобы включить мой комментарий.
Исакбоб
@isakbob не похоже, что он больше там
Мэтью
@ Матфея ¯ \ _ (ツ) _ / ¯ полагаю, тогда это считается здравым смыслом.
Исакбоб
6

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

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

xauth extract cookie_file $DISPLAY

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

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

user100341
источник
Также возможно, что у хоста просто нет дисплея вообще. В этом случае вы можете установить 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

Ссылки

SLM
источник
0

Если вы работаете в Linux с Gnome:

Начните Gnome с сеанса Xorg:

После нажатия на ваше имя пользователя в GDM (менеджер приветствия / входа в систему), нажмите ваше имя пользователя и, прежде чем вводить пароль, нажмите маленькую шестерню и выберите Gnome with Xorg, затем введите свой пароль

warhansen
источник
-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.

PLA
источник