Open Eclipse avec un utilisateur Linux n'ayant pas d'environnement graphique (créé à partir de la console)


3

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?


J'ai mis à jour hduser pour pouvoir me connecter correctement à Ubuntu , dans l'espoir que cela puisse être utile pour résoudre le problème de cet utilisateur lors de l'exécution de l'éclipse, mais cela n'a pas fonctionné. En outre, je règle tous les fichiers avec les mêmes ensembles d'autorisations chmod -R 777 /opt/eclipse/*. Le problème demeure.
chomp

Réponses:


3

Essayez d'exécuter cette commande:

export DISPLAY=:0

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.


Bonjour @ professeur-blargin, merci pour votre réponse. J'ai essayé, export DISPLAY=:0mais 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?
chomp

1

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:

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

Solution partie 1 - paquets manquants

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

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:

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 devrez utiliser xauth addpour ajouter l'utilisateur initial connecté au $HOME/.Xauthorityfichier root .

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

Références


J'ai essayé cela, mais je reçois: xauth: fichier /home/xxxx/.Xauthority n'existe pas
warhansen le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.