2

Я создал пользователя из консоли в моем Ubuntu Destkop 14.04 LTS, выполнив это:

sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser

Я использовал этого пользователя для всякого рода вещей, потому что я использую его для выполнения каких-то программных вещей, связанных с hadoop, поэтому я знаю, что он работает нормально, всегда использую его из консоли и выполняю вещи без GUI. И я хочу открыть с этим пользователем Eclipse (Luna), поэтому я делаю это:

su hduser
cd /opt/eclipse
./eclipse

Но это выдает мне ошибку:

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

Но если я открою затмение из консоли, используя моего "основного пользователя" (то же самое, что я использовал для входа в мой Ubuntu Destkop), затмение открывается совершенно нормально.

Вот почему я подозреваю, что разница, существующая между обоими пользователями, не позволяет мне сделать это, и я подозреваю, что проблема заключается в том, что hduser не имеет надлежащих конфигураций для использования в графической среде. Я прав? Можно ли изменить hduser таким образом, чтобы я мог открыть затмение?

2 ответа2

2

Попробуйте выполнить эту команду:

export DISPLAY=:0

Перед запуском Eclipse он знает, какой дисплей X использовать.

Если это не сработает, этому пользователю также могут потребоваться файлы конфигурации для оконного менеджера. Так что просто сделайте GUI-маршрут для добавления нового пользователя (я полагаю, это в разделе « Настройки» → «Пользователи и группы»), чтобы загрузить все стандартные конфигурации.

1

Я столкнулся с подобной проблемой при установке IBM Installation Manager (IBMIM) в CentOS 6.x и обошел эту проблему, установив несколько пакетов, которые стали причиной этой идентичной ошибки:

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

Решение часть 1 - недостающие пакеты

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

Нечто подобное можно было бы сделать и в Ubuntu.

Решение часть 2 - xauth

Другая проблема, которая может возникнуть, заключается в том, что вы пытаетесь запустить программу установки IBMIM (на основе Eclipse) от имени пользователя root с помощью sudo. Когда вы сделаете это, вы получите вышеуказанную ошибку приложения от установщика:

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]

Чтобы обойти это, вам нужно использовать xauth add чтобы добавить начального пользователя, который вы вошли в систему, как пользователя root $HOME/.Xauthority file.

Как пользователь 1:

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

Тогда как 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

Рекомендации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .