org.eclipse.swt.SWTError:在 ubuntu 上运行 eclipse 时不再有句柄

org.eclipse.swt.SWTError:在 ubuntu 上运行 eclipse 时不再有句柄

我试图使用下面的命令在我的 ubuntu VM 中打开 Eclipse。一旦我这样做,我总是会得到下面的异常 -

ubuntu@username-dyn-vm1-48493:~$ eclipse
Eclipse:
An error has occurred. See the log file
/home/ubuntu/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1381367113197.log.

所以当我转到那个特定的日志文件时,这就是我在日志中看到的内容 -

ubuntu@username-dyn-vm1-48493:~$ more /home/ubuntu/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1381367113197.log
!SESSION 2013-10-10 01:05:13.088 -----------------------------------------------
eclipse.buildId=debbuild
java.version=1.7.0_25
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.osgi 4 0 2013-10-10 01:05:17.555
!MESSAGE Application error
!STACK 1
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:914)
        at org.eclipse.swt.widgets.Display.create(Display.java:900)
        at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:498)
        at org.eclipse.swt.widgets.Display.<init>(Display.java:489)
        at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:716)
        at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
        at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:154)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:96)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1414)

有谁知道发生了什么问题?或者我应该做什么来解决这个问题?谢谢..

更新:-

版本详细信息如下 -

ubuntu@username-dyn-vm1-48493:~$ dpkg -l libgtk[0-9]* | grep ^i
ii  libgtk2.0-0:amd64                   2.24.17-0ubuntu2                    amd64        GTK+ graphical user interface library
ii  libgtk2.0-bin                       2.24.17-0ubuntu2                    amd64        programs for the GTK+ graphical user interface library
ii  libgtk2.0-common                    2.24.17-0ubuntu2                    all          common files for the GTK+ graphical user interface library

答案1

如果您尝试通过 ssh 启动 Eclipse 而不转发 X 访问,也会出现此错误。即,您忘记运行ssh -X user@host或忘记包含ForwardX11 yes~/.ssh/config服务器条目中。

我为任何可能从 Google 搜索中偶然发现这个问题的人添加这个答案,即使从技术上讲,OP 正在询问 VM 案例。

答案2

我认为这是gtk的问题。检查安装的是什么版本。

dpkg -l libgtk[0-9]* | grep ^i

如果未安装或者版本不正确,则执行 asudo apt-get install gtksudo apt-get update.

编辑

问题在于 SSH 使用 SSH 远程访问 Linux VM,并且没有在 Windows 上设置 X-Server,也没有启用 X11 转发。解决这个问题后,OP 运行 Eclipse 应该不会有任何问题。

答案3

此外,这也可能是由于应用程序没有正确的授权来显示到远程造成的X server。当您以一个用户身份登录 ssh 会话并以另一用户身份执行命令来启动 GUI 应用程序时,通常会发生这种情况。例如,当您登录远程服务器并执行sudo命令时。要解决此问题,您需要获取登录用户的 magic cookie,并为运行命令的用户导入 cookie。

当用户登录到有权显示的服务器时X,运行:

xauth extract cookie_file $DISPLAY

然后当用户尝试运行 gui: xauthmergecookie_file

一旦 cookie 被导入到用户的 .Xauthority文件后,您应该能够执行 GUI。

答案4

如果您在带有 Gnome 的 Linux 上运行:

使用 Xorg 会话启动 Gnome:

在 GDM(欢迎/登录管理器)中单击您的用户名后,单击您的用户名,然后在输入密码之前,单击小齿轮并选择 Gnome with Xorg,然后输入您的密码

相关内容