Откройте eclipse с пользователем Linux, у которого нет графического окружения (созданного из консоли)

3689
chomp

Я создал пользователя из консоли в моем 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
Я обновил hduser [для возможности правильного входа в ubuntu] (http://askubuntu.com/questions/628146/user-created-from-command-line-cant-login-successfully), в надежде, что это может быть полезно для решения проблемы этого пользователя для выполнения затмения, но это не сработало. Кроме того, я установил все файлы с одинаковыми наборами разрешений `chmod -R 777 / opt / eclipse / *`. Проблема остается. chomp 8 лет назад 0

2 ответа на вопрос

2
Professor Blargin

Try executing this command:

export DISPLAY=:0 

It makes sure it knows which X display to use before executing Eclipse.

If that doesn't work, this user may also need to have configuration files for a window manager. So just do the GUI route for adding a new user (I believe it's under Preferences → Users and Groups) so all the default configs are loaded.

Привет, профессор-blargin, спасибо за ответ. Я попытался `экспорт DISPLAY =: 0`, но та же ошибка сохраняется (** org.eclipse.swt.SWTError: больше не обрабатывает [gtk_init_check () не удалось] **). Кроме того, я не мог добавить нового пользователя из «Пользователи и группы», потому что он там уже существует. Любая другая идея? chomp 8 лет назад 0
1
slm

I ran into a similar problem while installing IBM Installation Manager (IBMIM) on CentOS 6.x and worked around the issue by installing several packages which were the cause of this identical error:

$ 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 part 1 - missing packages

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

Something similar to this could've been done on Ubuntu as well.

Solution part 2 - xauth

The other issue that'll arise is you're attempting to run the IBMIM installer (Eclipse based) as the root user via sudo. When you do this you'll get the above Application error from the installer:

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] 

To work around this you'll need to use xauth add to add the initial user you logged in as to root's $HOME/.Xauthority file.

As user1:

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

Then as 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 

References

Я пробовал это, но я получаю: xauth: файл /home/xxxx/.Xauthority не существует warhansen 5 лет назад 0