Я создал пользователя из консоли в моем Ubuntu Destkop 14.04 LTS, выполнив следующие действия:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
Я использовал этого пользователя для выполнения самых разных задач, потому что я использую его для программирования, связанного с Hadoop, поэтому я знаю, что он работает нормально,всегда использую его из консоли и выполняю вещи без графического интерфейса. И я хочу открыть с этим пользователем 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)
Но если я открываю Eclipse из консоли, используя своего «главного пользователя» (того же, которого я использовал для входа в свой рабочий стол Ubuntu), Eclipse открывается совершенно нормально.
Вот почему я подозреваю, что разница, существующая между двумя пользователями, не позволяет мне сделать это, и я подозреваю, что проблема в том, чтоhduserне имеет надлежащих конфигураций для использования в графической среде. Я прав? Можно ли изменить hduser таким образом, чтобы я мог открыть eclipse?
решение1
Попробуйте выполнить эту команду:
export DISPLAY=:0
Он проверяет, какой X-дисплей использовать, прежде чем запускать Eclipse.
Если это не сработает, этому пользователю также могут понадобиться файлы конфигурации для оконного менеджера. Так что просто выполните маршрут GUI для добавления нового пользователя (я думаю, это подНастройки → Пользователи и группы) поэтому загружаются все конфигурации по умолчанию.
решение2
Я столкнулся с похожей проблемой при установке 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
.
Как пользователь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