org.eclipse.swt.SWTError: no más identificadores [gtk_init_check () falló] mientras ejecuta eclipse en ubuntu

24

Estaba tratando de abrir eclipse en mi ubuntu VM con el siguiente comando ... Y tan pronto como hago eso, siempre obtengo la siguiente excepción:

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.

así que cuando fui a ese archivo de registro en particular, esto es lo que puedo ver en el registro:

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)

¿Alguien sabe qué ha pasado mal? ¿O qué se supone que debo hacer para solucionar este problema? Gracias..

Actualizar:-

Detalles de la versión a continuación:

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
fuente
Por extraño que parezca, tuve un problema similar al intentar ejecutar dbeaver. Primero tuve que salir de tmux para que funcione correctamente. Impar
matchew

Respuestas:

4

Creo que esto es un problema con GTK. Comprueba qué versión está instalada.

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

Si no está instalado o es la versión incorrecta, haga una sudo apt-get install gtko una sudo apt-get update.

EDITAR

El problema era que SSH estaba usando SSH para remotamente en una VM Linux y no tenía un X-Server configurado en Windows y no tenía habilitado el reenvío X11. Después de enderezarse, el OP no debería tener problemas para ejecutar Eclipse.

Jeight
fuente
Actualicé mi pregunta con la información de la versión real. Avíseme si todavía tengo que actualizar.
SSH
Bueno, hay una versión 3.8 para gtk, por lo que no estaría de más actualizar a la última versión.
Jeight
3
Ya veo ... Pero cuando lo actualicé, esto es lo que obtuve sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . No es capaz de localizar el paquete gtk de alguna manera ... ¿Alguna idea?
SSH
¿Qué obtienes cuando haces un sudo apt-cache search gtk?
Jeight
Hizo muchas cosas ... Y muchas cosas se imprimieron en mi pantalla ... ¿No estás seguro de lo que te puede interesar?
SSH
10

Este también es el error que obtiene si intenta iniciar Eclipse a través de ssh sin reenviar el acceso X. Es decir, olvidó ejecutar ssh -X user@hostu olvidó incluir ForwardX11 yesen su ~/.ssh/configentrada para el servidor.

Estoy agregando esta respuesta para cualquiera que pueda tropezar con esta pregunta en una búsqueda de Google, aunque técnicamente OP está preguntando sobre un caso de VM.

usuario837451
fuente
@isakbob Gracias, esto resolvió mi problema. No se pudo encontrar la respuesta en ningún otro lado. Es posible que desee publicarlo como respuesta.
Mateo
@Matthew No creo que mi comentario justifique otra respuesta. Acabo de editar esta respuesta para incluir mi comentario.
isakbob
6

Además, esto también puede deberse a que la aplicación no tiene la autorización correcta para mostrar al control remoto X server. Esto suele suceder cuando inicia sesión en la sesión ssh como un usuario y ejecuta un comando como otro usuario para iniciar una aplicación GUI. Por ejemplo, cuando inicia sesión en el servidor remoto y ejecuta un sudocomando. Para resolver este problema, deberá obtener la cookie mágica del usuario que inicia sesión e importar la cookie para el usuario que ejecuta el comando.

Cuando el usuario inicie sesión en el servidor que tiene autoridad para mostrar X, ejecute:

xauth extract cookie_file $DISPLAY

Luego, cuando el usuario intenta ejecutar la interfaz gráfica de usuario: xauthfusionarcookie_file

Una vez que la cookie se importa al usuario. Xauthorityarchivo, debe poder ejecutar la GUI.

usuario100341
fuente
También es posible que ese host simplemente no tenga pantalla. En este caso, puede instalar Xvfb y crear un búfer de trama virtual con comandos: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 fuente
Staszek
3

Me encontré con un problema similar al instalar IBM Installation Manager (IBMIM) en CentOS 6.x y solucioné el problema instalando varios paquetes que fueron la causa de este error idéntico:

$ 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.

Solución parte 1 - paquetes faltantes

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

Algo similar a esto podría haberse hecho también en Ubuntu.

Solución parte 2 - xauth

El otro problema que surgirá es que está intentando ejecutar el instalador de IBMIM (basado en Eclipse) como usuario root a través de sudo. Cuando haga esto, obtendrá el error de aplicación anterior del instalador:

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]

Para solucionar este problema, deberá usar xauth addpara agregar el usuario inicial con el que inició sesión en el $HOME/.Xauthorityarchivo raíz .

Como usuario1:

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

Luego como raíz:

$ 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

Referencias

slm
fuente
0

Si está ejecutando en un Linux con Gnome:

Comience un Gnomo con una sesión de Xorg:

Después de hacer clic en su nombre de usuario en GDM (el administrador de bienvenida / inicio de sesión), haga clic en su nombre de usuario y antes de ingresar la contraseña, haga clic en el pequeño engranaje y seleccione Gnome con Xorg, luego ingrese su contraseña

warhansen
fuente
-1

Después de deshabilitar IPV6 en la máquina remota, recibí el mensaje org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]al usar el comando ssh -X ub-dev /opt/eclipse/eclipse. Para arreglarlo en Ubuntu 14.04 agregué una línea AddressFamily inetal archivo /etc/ssh/sshd_configy reinicié ssh sudo service ssh restart.

PLA
fuente