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

24

J'essayais d'ouvrir Eclipse dans ma machine virtuelle Ubuntu avec la commande ci-dessous .. Et dès que je fais cela, 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
SSH
la source
étrangement, j'ai eu un problème similaire en essayant d'exécuter dbeaver. J'ai d'abord dû quitter tmux pour qu'il fonctionne correctement. Odd
matchew

Réponses:

4

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, faites un sudo apt-get install gtkou faites un sudo apt-get update.

MODIFIER

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

Jeight
la source
J'ai mis à jour ma question avec les informations de version réelles. Faites-moi savoir si j'ai encore besoin de faire la mise à jour?
SSH
Eh bien, il existe une version 3.8 pour gtk, il n'est donc pas difficile de mettre à jour vers la dernière version.
Jeight
3
Je vois .. Mais quand je l'ai mis à jour, c'est ce que j'ai obtenu - sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Il n'est pas en mesure de localiser le paquet gtk d'une manière ou d'une autre. Une idée?
SSH
Qu'obtenez-vous lorsque vous faites un sudo apt-cache search gtk?
Jeight
Il a fait beaucoup de choses .. Et plein de choses ont été imprimées sur mon écran .. Vous ne savez pas ce qui pourrait vous intéresser?
SSH
10

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 que vous avez oublié d'exécuter ssh -X user@hostou oublié d'inclure ForwardX11 yesdans votre ~/.ssh/configentrée pour le serveur.

J'ajoute cette réponse à quiconque peut tomber sur cette question à partir d'une recherche Google même si techniquement, OP pose des questions sur un cas de machine virtuelle.

user837451
la source
@isakbob Merci, cela a résolu mon problème. Impossible de trouver la réponse ailleurs. Je pourrais vouloir l'afficher comme réponse.
Matthew
@Matthew Je ne pense pas que mon commentaire mérite une autre réponse. Je viens de modifier cette réponse pour inclure mon commentaire.
isakbob
@isakbob ne semble plus être là
Matthew
@Matthew ¯ \ _ (ツ) _ / ¯ suppose que c'est alors du bon sens.
isakbob
6

En outre, cela peut également être dû au fait que l'application ne dispose pas de l'autorisation correcte pour s'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 sudocommande. 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 X, exécutez:

xauth extract cookie_file $DISPLAY

Ensuite, en tant qu'utilisateur essayant d'exécuter l'interface graphique: xauthfusionnercookie_file

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

user100341
la source
Il est également possible que cet hôte n'ait tout simplement pas d'affichage. Dans ce cas, vous pouvez installer Xvfb et créer un tampon de trame virtuel avec les commandes: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek
3

J'ai rencontré un problème similaire lors de l'installation d'IBM Installation Manager (IBMIM) sur CentOS 6.x et j'ai contourné 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 devrez utiliser xauth addpour ajouter l'utilisateur initial auquel vous vous êtes connecté en tant que $HOME/.Xauthorityfichier racine .

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

Les références

slm
la source
0

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

warhansen
la source
-1

Après avoir désactivé IPV6 sur la machine distante, j'ai reçu le message org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]lors de l'utilisation de la commande ssh -X ub-dev /opt/eclipse/eclipse. Pour corriger Ubuntu 14.04, j'ai ajouté une ligne AddressFamily inetau fichier /etc/ssh/sshd_configet redémarré ssh sudo service ssh restart.

PLA
la source