web-dev-qa-db-fra.com

org.Eclipse.swt.SWTError: plus de descripteurs [gtk_init_check () a échoué] lors de l'exécution d'Eclipse sur ubuntu

J'essayais d'ouvrir Eclipse dans mon ubuntu VM avec la commande ci-dessous .. Et dès que je le fais, je reçois toujours l'exception ci-dessous -

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.

donc quand je suis allé à ce fichier journal particulier, voici ce que je peux voir dans le journal -

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)

Quelqu'un sait-il ce qui s'est passé? Ou ce que je suis censé faire pour résoudre ce problème? Merci..

Mise à jour: -

Détails de la version ci-dessous -

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
24
SSH

Je pense que c'est un problème avec gtk. Vérifiez quelle version est installée.

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

S'il n'est pas installé ou si la version est incorrecte, effectuez une Sudo apt-get install gtk ou faites un Sudo apt-get update.

MODIFIER

Le problème était que SSH utilisait SSH pour se connecter à distance à un Linux VM et n'avait pas de serveur X configuré sur Windows et n'avait pas activé le transfert X11. Après avoir corrigé cela l'OP ne devrait pas avoir de problèmes lors de l'exécution d'Eclipse.

4
Jeight

C'est également l'erreur que vous obtenez si vous essayez de démarrer Eclipse via ssh sans transférer l'accès X. C'est à dire, vous avez oublié d'exécuter ssh -X user@Host ou oublié d'inclure ForwardX11 yes dans ton ~/.ssh/config entrée pour le serveur.

J'ajoute cette réponse à tous ceux qui peuvent tomber sur cette question à partir d'une recherche Google même si techniquement, OP pose des questions sur un VM cas.

10
user837451

En outre, cela peut également être dû au fait que l'application ne dispose pas de l'autorisation appropriée pour afficher sur la télécommande X server. Cela se produit généralement lorsque vous vous connectez à la session ssh en tant qu'un utilisateur et exécutez une commande en tant qu'autre utilisateur pour lancer une application GUI. Par exemple, lorsque vous vous connectez au serveur distant et exécutez une commande Sudo. Pour résoudre ce problème, vous devrez obtenir le cookie magique de l'utilisateur qui se connecte et importer le cookie pour l'utilisateur exécutant la commande.

En tant qu'utilisateur se connectant au serveur autorisé à afficher dans X, exécutez:

xauth extract cookie_file $DISPLAY

Puis en tant qu'utilisateur essayant d'exécuter l'interface graphique: xauth merge cookie_file

Une fois le cookie importé dans le fichier .Xauthority de l'utilisateur, vous devriez pouvoir exécuter l'interface graphique.

6
user100341

J'ai rencontré un problème similaire lors de l'installation d'IBM Installation Manager (IBMIM) sur CentOS 6.x et j'ai résolu le problème en installant plusieurs packages qui étaient à l'origine de cette erreur identique:

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

Solution partie 1 - Paquets manquants

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

Quelque chose de similaire aurait pu être fait sur Ubuntu également.

Solution partie 2 - xauth

L'autre problème qui se posera est que vous essayez d'exécuter le programme d'installation IBMIM (basé sur Eclipse) en tant qu'utilisateur root via Sudo. Lorsque vous faites cela, vous obtiendrez l'erreur d'application ci-dessus du programme d'installation:

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]

Pour contourner ce problème, vous devez utiliser xauth add pour ajouter l'utilisateur initial auquel vous vous êtes connecté en tant que root $HOME/.Xauthority fichier.

En tant qu'utilisateur1:

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

Puis en tant que root:

$ 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

Références

3
slm

Si vous utilisez un Linux avec Gnome:

Démarrer un gnome avec une session Xorg:

Après avoir cliqué sur votre nom d'utilisateur dans GDM (le gestionnaire d'accueil/de connexion), cliquez sur votre nom d'utilisateur et avant d'entrer le mot de passe, cliquez sur le petit engrenage et sélectionnez Gnome avec Xorg, puis entrez votre mot de passe

0
warhansen