J'ai créé un utilisateur depuis la console dans mon Ubuntu Destkop 14.04 LTS, en procédant comme suit:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
J'ai utilisé cet utilisateur pour faire toutes sortes de choses, parce que je l'utilise pour faire des choses de programmation liées à hadoop, donc je sais que ça fonctionne bien, toujours en les utilisant depuis la console et en exécutant des choses sans interface graphique . Et je veux ouvrir, avec cet utilisateur, une Eclipse (Luna), alors, je fais ceci:
su hduser
cd /opt/eclipse
./eclipse
Mais cela me jette une erreur:
!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)
Mais, si j'ouvre eclipse depuis la console en utilisant mon "utilisateur principal" (identique à celui que j'ai utilisé pour me connecter à mon compte ubuntu), l'éclipse s'ouvre parfaitement.
C'est pourquoi je soupçonne que la différence existant entre les deux utilisateurs ne me laisse pas faire cela, et je soupçonne que le problème est que hduser n'a pas les configurations appropriées pour être utilisé dans un environnement graphique. Je suis juste? Peut-on modifier hduser de manière à ce que je puisse ouvrir eclipse?
chmod -R 777 /opt/eclipse/*
. Le problème demeure.Réponses:
Essayez d'exécuter cette commande:
Il s'assure de savoir quel écran X utiliser avant d'exécuter Eclipse.
Si cela ne fonctionne pas, cet utilisateur peut également avoir besoin de fichiers de configuration pour un gestionnaire de fenêtres. Il suffit donc de suivre la route graphique pour ajouter un nouvel utilisateur (je crois que cela se trouve dans Préférences → Utilisateurs et groupes ) afin que toutes les configurations par défaut soient chargées.
la source
export DISPLAY=:0
mais la même erreur persiste ( org.eclipse.swt.SWTError: plus de descripteurs [gtk_init_check () a échoué] ). De plus, je ne pouvais pas ajouter un nouvel utilisateur à partir de "Utilisateurs et groupes", car il existe déjà là-bas. Une autre idée?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:
Solution partie 1 - paquets manquants
Quelque chose de similaire aurait pu être fait sur Ubuntu également.
Solution partie 2 - xauth
L'autre problème qui se pose est que vous tentez d'exécuter le programme d'installation IBMIM (basé sur Eclipse) en tant qu'utilisateur root via sudo. Lorsque vous faites cela, vous obtenez l'erreur d'application ci-dessus de l'installateur:
Pour contourner ce problème, vous devrez utiliser
xauth add
pour ajouter l'utilisateur initial connecté au$HOME/.Xauthority
fichier root .En tant qu'utilisateur1:
Puis en tant que root:
Références
la source