我试图使用下面的命令在我的 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 gtk
或sudo 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:
xauth
mergecookie_file
一旦 cookie 被导入到用户的 .Xauthority
文件后,您应该能够执行 GUI。
答案4
如果您在带有 Gnome 的 Linux 上运行:
使用 Xorg 会话启动 Gnome:
在 GDM(欢迎/登录管理器)中单击您的用户名后,单击您的用户名,然后在输入密码之前,单击小齿轮并选择 Gnome with Xorg,然后输入您的密码