Abra o eclipse com um usuário linux que não tenha ambiente gráfico (criado a partir do console)

2

Eu criei um usuário do console no meu Ubuntu Destkop 14.04 LTS, fazendo isso:

sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser

Eu usei esse usuário para fazer todo tipo de coisa, porque eu estou usando ele para fazer algumas coisas de programação que estão relacionadas ao hadoop, então eu sei que ele funciona bem, sempre usando ele do console e executando coisas sem uma GUI . E eu quero abrir, com esse usuário, um Eclipse (Luna), então, eu faço isso:

su hduser
cd /opt/eclipse
./eclipse

Mas isso me causa um erro:

!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)

Mas, se eu abrir o eclipse do console usando o meu "usuário principal" (o mesmo que usei para efetuar login no meu destunk do ubuntu), o eclipse se abre perfeitamente bem.

É por isso que eu suspeito que a diferença existente entre os dois usuários não me deixa fazer isso, e eu suspeito que o problema é que hduser não tem as configurações adequadas para ser usado em um ambiente gráfico. Eu estou bem? Pode ser hduser modificado de uma forma que me permita abrir o eclipse?

    
por chomp 23.05.2015 / 20:28

2 respostas

2

Tente executar este comando:

export DISPLAY=:0

Garante que sabe qual display X usar antes de executar o Eclipse.

Se isso não funcionar, este usuário também pode precisar de arquivos de configuração para um gerenciador de janelas. Então, basta fazer a rota GUI para adicionar um novo usuário (acredito que esteja sob Preferências → Usuários e Grupos ) para que todas as configurações padrão sejam carregadas.

    
por 23.05.2015 / 20:43
1

Eu tive um problema semelhante ao instalar o IBM Installation Manager (IBMIM) no CentOS 6.xe resolvi o problema instalando vários pacotes que eram a causa desse erro idêntico:

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

Solução parte 1 - pacotes ausentes

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

Algo parecido com isso poderia ter sido feito no Ubuntu também.

Solução parte 2 - xauth

O outro problema que surgirá é que você está tentando executar o instalador IBMIM (baseado no Eclipse) como o usuário root via sudo. Quando você fizer isso, obterá o erro de aplicativo acima do instalador:

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]

Para contornar isso, você precisará usar xauth add para adicionar o usuário inicial com o qual você efetuou login como o arquivo $HOME/.Xauthority do root.

Como usuário1:

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

Então, como 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

Referências

por 23.05.2016 / 04:01