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