Ich habe in meinem Ubuntu Desktop 14.04 LTS einen Benutzer über die Konsole erstellt, und zwar folgendermaßen:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
Ich habe diesen Benutzer für alle möglichen Dinge verwendet, weil ich ihn für einige Programmiersachen verwende, die mit Hadoop zu tun haben, also weiß ich, dass es gut funktioniert.Ich verwende es immer von der Konsole aus und führe Dinge ohne GUI aus. Und ich möchte mit diesem Benutzer eine Eclipse (Luna) öffnen, also mache ich Folgendes:
su hduser
cd /opt/eclipse
./eclipse
Aber es gibt einen Fehler aus:
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
at org.eclipse.swt.SWT.error(SWT.java:4467)
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:934)
at org.eclipse.swt.widgets.Display.create(Display.java:918)
at org.eclipse.swt.graphics.Device.<init>(Device.java:157)
at org.eclipse.swt.widgets.Display.<init>(Display.java:514)
at org.eclipse.swt.widgets.Display.<init>(Display.java:505)
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:732)
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:162)
at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay$
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEAppl$
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHand$
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runAppl$
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(E$
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.j$
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.j$
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl$
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce$
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Aber wenn ich Eclipse von der Konsole aus mit meinem „Hauptbenutzer“ öffne (derselbe, den ich für die Anmeldung bei meinem Ubuntu-Desktop verwendet habe), öffnet sich Eclipse einwandfrei.
Deshalb vermute ich, dass der Unterschied zwischen den beiden Benutzern es mir nicht erlaubt, dies zu tun, und ich vermute, dass das Problem darin besteht, dasshduserhat nicht die richtige Konfiguration für die Verwendung in einer grafischen Umgebung. Habe ich recht? Kann hduser so geändert werden, dass ich Eclipse öffnen kann?
Antwort1
Versuchen Sie, diesen Befehl auszuführen:
export DISPLAY=:0
Es stellt sicher, dass es weiß, welches X-Display verwendet werden soll, bevor Eclipse ausgeführt wird.
Wenn das nicht funktioniert, benötigt dieser Benutzer möglicherweise auch Konfigurationsdateien für einen Fenstermanager. Führen Sie also einfach den GUI-Weg zum Hinzufügen eines neuen Benutzers aus (ich glaube, das ist unterEinstellungen → Benutzer und Gruppen), sodass alle Standardkonfigurationen geladen werden.
Antwort2
Ich bin bei der Installation von IBM Installation Manager (IBMIM) auf CentOS 6.x auf ein ähnliches Problem gestoßen und habe es umgangen, indem ich mehrere Pakete installiert habe, die diesen identischen Fehler verursacht haben:
$ 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
Etwas Ähnliches hätte auch unter Ubuntu möglich sein können.
Lösung Teil 2 - xauth
Das andere Problem, das auftreten kann, ist, wenn Sie versuchen, das IBMIM-Installationsprogramm (basierend auf Eclipse) als Root-Benutzer über sudo auszuführen. Wenn Sie dies tun, erhalten Sie vom Installationsprogramm den oben genannten Anwendungsfehler:
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 Sie xauth add
den Benutzer, mit dem Sie sich ursprünglich angemeldet haben, zur Root- $HOME/.Xauthority
Datei hinzufügen.
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