org.eclipse.swt.SWTError: non più handle [gtk_init_check () non riuscito] durante l'esecuzione di eclipse su ubuntu


24

Stavo cercando di aprire eclissi nella mia macchina virtuale Ubuntu con il comando seguente .. E non appena lo faccio, ottengo sempre l'eccezione di seguito:

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.

quindi quando sono andato a quel particolare file di registro, questo è ciò che posso vedere nel 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)

Qualcuno sa cosa è successo? O cosa dovrei fare per risolvere questo problema? Grazie..

Aggiornare:-

Dettagli della versione di seguito -

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

stranamente ho avuto un problema simile nel tentativo di eseguire dbeaver. Ho dovuto uscire prima da tmux perché funzionasse correttamente. Odd
matchew

Risposte:


4

Penso che questo sia un problema con GTK. Controlla quale versione è installata.

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

Se non è installato o è la versione errata, fare un sudo apt-get install gtko fare un sudo apt-get update.

MODIFICARE

Il problema era che SSH stava usando SSH per remotare in una VM Linux e non aveva un X-Server impostato su Windows e non era abilitato l'inoltro X11. Dopo aver risolto il problema, l'OP non dovrebbe avere problemi con Eclipse.


Ho aggiornato la mia domanda con le informazioni sulla versione attuale. Fammi sapere se devo ancora aggiornare?
SSH,

Bene c'è una versione 3.8 per GTK là fuori, quindi non potrebbe far male aggiornare all'ultima versione.
Jeight,

3
Vedo .. Ma quando l'ho aggiornato questo è quello che ho ottenuto sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Non è in grado di individuare il pacchetto gtk in qualche modo .. Qualche idea?
SSH,

Cosa ottieni quando fai un sudo apt-cache search gtk?
Jeight,

Ha fatto molte cose .. E un sacco di cose sono state stampate sul mio schermo .. Non sei sicuro di cosa potresti essere interessato?
SSH,

10

Questo è anche l'errore che si ottiene se si tenta di avviare Eclipse su ssh senza inoltrare l'accesso X. Vale a dire, hai dimenticato di eseguire ssh -X user@hosto hai dimenticato di includere ForwardX11 yesnella ~/.ssh/configvoce per il server.

Sto aggiungendo questa risposta a chiunque possa imbattersi in questa domanda da una ricerca di Google anche se tecnicamente, OP sta chiedendo un caso di VM.


@isakbob Grazie, questo ha risolto il mio problema. Impossibile trovare la risposta da nessun'altra parte. Potrebbe voler inviarlo come risposta.
Matteo

@Matthew Non credo che il mio commento meriti un'altra risposta. Ho appena modificato questa risposta per includere il mio commento.
Isakbob,

6

Inoltre, ciò può essere causato dall'applicazione che non dispone dell'autorizzazione corretta per la visualizzazione sul telecomando X server. Questo in genere accade quando si accede alla sessione ssh come un utente ed si esegue un comando come un altro utente per lanciare un'applicazione GUI. Ad esempio quando si accede al server remoto ed si esegue un sudocomando. Per risolvere questo problema, dovrai ottenere il cookie magico dell'utente che accede e importare il cookie per l'utente che esegue il comando.

Quando l'utente accede al server che dispone dell'autorizzazione per visualizzare X, eseguire:

xauth extract cookie_file $DISPLAY

Quindi, quando l'utente tenta di eseguire la gui: xauthuniscicookie_file

Una volta importato il cookie nell'utente. Xauthorityfile, dovresti essere in grado di eseguire la GUI.


È anche possibile che l'host non abbia affatto la visualizzazione. In questo caso è possibile installare Xvfb e creare un buffer di frame virtuale con comandi: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek,

3

Ho riscontrato un problema simile durante l'installazione di IBM Installation Manager (IBMIM) su CentOS 6.x e ho risolto il problema installando diversi pacchetti che sono stati la causa di questo errore identico:

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

Soluzione parte 1 - pacchetti mancanti

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

Qualcosa di simile a questo avrebbe potuto essere fatto anche su Ubuntu.

Soluzione parte 2 - xauth

L'altro problema che si presenta è che stai tentando di eseguire il programma di installazione IBMIM (basato su Eclipse) come utente root tramite sudo. Quando lo fai, riceverai l'errore di applicazione sopra dall'installer:

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]

Per ovviare a questo, dovrai usare xauth addper aggiungere l'utente iniziale che hai effettuato l'accesso come $HOME/.Xauthorityfile root .

Come utente1:

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

Quindi come 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

Riferimenti


0

Se stai eseguendo un Linux con Gnome:

Inizia uno Gnome con una sessione Xorg:

Dopo aver fatto clic sul tuo nome utente in GDM (il gestore di benvenuto / login), fai clic sul tuo nome utente e prima di inserire la password, fai clic sulla piccola attrezzatura e seleziona Gnome con Xorg, quindi inserisci la password


-1

Dopo aver disabilitato IPV6 sul computer remoto ho ricevuto il messaggio org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]quando si utilizzava il comando ssh -X ub-dev /opt/eclipse/eclipse. Per risolvere su Ubuntu 14.04 ho aggiunto la linea AddressFamily inetal file /etc/ssh/sshd_confige riavviato ssh sudo service ssh restart.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.