org.eclipse.swt.SWTError: Keine weiteren Handles [gtk_init_check () fehlgeschlagen] beim Ausführen von Eclipse auf Ubuntu


24

Ich habe versucht, Eclipse in meiner Ubuntu-VM mit dem folgenden Befehl zu öffnen. Und sobald ich das tue, erhalte ich immer die folgende Ausnahme:

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.

Wenn ich zu dieser bestimmten Protokolldatei ging, ist dies das, was ich im Protokoll sehen kann -

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)

Weiß jemand was schief gelaufen ist? Oder was soll ich tun, um dieses Problem zu beheben? Vielen Dank..

Aktualisieren:-

Versionsdetails unten -

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

seltsamerweise hatte ich ein ähnliches Problem beim Versuch, dbeaver auszuführen. Ich musste tmux zuerst beenden, damit es richtig funktioniert. Ungerade
Matchew

Antworten:


4

Ich denke das ist ein Problem mit gtk. Überprüfen Sie, welche Version installiert ist.

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

Wenn es nicht installiert ist oder die falsche Version ist, führen Sie ein sudo apt-get install gtkoder ein aus sudo apt-get update.

BEARBEITEN

Das Problem bestand darin, dass SSH SSH zum Remote-Zugriff auf eine Linux-VM verwendete, unter Windows keinen X-Server eingerichtet und die X11-Weiterleitung nicht aktiviert hatte. Nachdem das geklärt wurde, sollte das OP keine Probleme mehr mit Eclipse haben.


Ich habe meine Frage mit den aktuellen Versionsinformationen aktualisiert. Lassen Sie mich wissen, ob noch ein Update erforderlich ist.
SSH

Nun, es gibt eine Version 3.8 für gtk, daher kann es nicht schaden, auf die neueste Version zu aktualisieren.
Jeight

3
Ich verstehe .. Aber als ich es aktualisiert habe, habe ich Folgendes bekommen - sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Das Paket gtk kann nicht gefunden werden. Irgendeine Idee?
SSH

Was bekommst du, wenn du ein machst sudo apt-cache search gtk?
Jeight

Es hat viele Dinge getan. Und eine ganze Reihe von Dingen wurde auf meinem Bildschirm ausgedruckt. Sie sind sich nicht sicher, woran Sie interessiert sein könnten?
SSH

10

Dies ist auch der Fehler, den Sie erhalten, wenn Sie versuchen, Eclipse über ssh zu starten, ohne den X-Zugriff weiterzuleiten. Dh Sie haben vergessen zu laufen ssh -X user@hostoder vergessen, ForwardX11 yesin Ihren ~/.ssh/configEintrag für den Server aufzunehmen.

Ich füge diese Antwort für jeden hinzu, der über diese Frage aus einer Google-Suche stolpert, obwohl OP technisch nach einem VM-Fall fragt.


@isakbob Danke, das hat mein Problem gelöst. Konnte die Antwort nirgendwo anders finden. Vielleicht möchten Sie es als Antwort posten.
Matthew

@Matthew Ich glaube nicht, dass mein Kommentar eine andere Antwort rechtfertigt. Ich habe diese Antwort soeben bearbeitet, dass sie meinen Kommentar enthält.
isakbob

6

Darüber hinaus kann dies auch darauf zurückzuführen sein, dass die Anwendung nicht über die richtige Berechtigung zum Anzeigen auf der Fernbedienung verfügt X server. Dies geschieht normalerweise, wenn Sie sich als ein Benutzer bei der SSH-Sitzung anmelden und als ein anderer Benutzer einen Befehl ausführen, um eine GUI-Anwendung zu starten. Zum Beispiel, wenn Sie sich beim Remote-Server anmelden und einen sudoBefehl ausführen . Um dieses Problem zu beheben, müssen Sie das Magic Cookie des Benutzers abrufen, der sich anmeldet, und das Cookie für den Benutzer importieren, der den Befehl ausführt.

XFühren Sie als Benutzer, der sich bei dem Server anmeldet, für den die Berechtigung zum Anzeigen besteht , Folgendes aus:

xauth extract cookie_file $DISPLAY

Dann als der Benutzer versucht, die GUI: xauthMerge auszuführen cookie_file

Sobald der Cookie in den Benutzer importiert wurde. XauthorityDatei sollten Sie in der Lage sein, die GUI auszuführen.


Es ist auch möglich, dass Hosts überhaupt keine Anzeige haben. In diesem Fall können Sie Xvfb installieren und einen virtuellen Bildpuffer mit den folgenden Befehlen erstellen: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek

3

Bei der Installation von IBM Installation Manager (IBMIM) unter CentOS 6.x trat ein ähnliches Problem auf. Das Problem wurde umgangen, indem mehrere Pakete installiert wurden, die die Ursache für diesen identischen Fehler darstellten:

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

Lösung Teil 1 - fehlende Pakete

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

Ähnliches hätte man auch mit Ubuntu machen können.

Lösung Teil 2 - xauth

Das andere Problem ist, dass Sie versuchen, das IBMIM-Installationsprogramm (Eclipse-basiert) als Root-Benutzer über sudo auszuführen. Wenn Sie dies tun, erhalten Sie den obigen Anwendungsfehler vom Installationsprogramm:

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]

Um dies zu umgehen, müssen xauth addSie den ersten Benutzer hinzufügen, den Sie als root- $HOME/.XauthorityDatei angemeldet haben .

Als Benutzer1:

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

Dann als 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

Verweise


0

Wenn Sie mit Gnome unter Linux arbeiten:

Starte einen Gnome mit einer Xorg-Sitzung:

Klicken Sie nach dem Klicken auf Ihren Benutzernamen in GDM (dem Begrüßungs- / Anmeldungsmanager) auf Ihren Benutzernamen und vor der Eingabe des Passworts auf das kleine Zahnrad und wählen Sie Gnome mit Xorg aus. Geben Sie dann Ihr Passwort ein


-1

Nach dem Deaktivieren von IPV6 auf dem Remotecomputer erhielt ich die Nachricht org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]bei Verwendung des Befehls ssh -X ub-dev /opt/eclipse/eclipse. Um das Problem unter Ubuntu 14.04 zu beheben, habe ich AddressFamily inetder Datei eine Zeile hinzugefügt /etc/ssh/sshd_configund ssh neu gestartet sudo service ssh restart.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.