
私は以下のコマンドで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
これは、X アクセスを転送せずに ssh 経由で Eclipse を起動しようとした場合にも発生するエラーです。つまり、実行を忘れたか、サーバーのエントリにssh -X user@host
含めるのを忘れたということです。ForwardX11 yes
~/.ssh/config
技術的には、OP は VM ケースについて質問していますが、Google 検索でこの質問に偶然出会った人のために、この回答を追加します。
答え2
これは gtk の問題だと思います。インストールされているバージョンを確認してください。
dpkg -l libgtk[0-9]* | grep ^i
インストールされていないか、バージョンが正しくない場合は、 またはsudo apt-get install gtk
を実行しますsudo apt-get update
。
編集
問題は、SSH が Linux VM にリモート接続するために SSH を使用していて、Windows に X サーバーが設定されておらず、X11 転送が有効になっていなかったことです。これを解決すれば、OP は Eclipse を実行する際に問題に遭遇することはないはずです。
答え3
さらに、アプリケーションがリモートに表示するための正しい権限を持っていないことが原因である可能性もありますX server
。 これは通常、あるユーザーとして ssh セッションにログインし、別のユーザーとしてコマンドを実行して GUI アプリケーションを起動するときに発生します。 たとえば、リモート サーバーにログインしてコマンドを実行するときなどですsudo
。 この問題を解決するには、ログインしているユーザーのマジック クッキーを取得し、コマンドを実行しているユーザーのクッキーをインポートする必要があります。
表示する権限を持つサーバーにログインしているユーザーとしてX
、以下を実行します。
xauth extract cookie_file $DISPLAY
次に、ユーザーがGUIを実行しようとすると:
xauth
マージcookie_file
クッキーがユーザーの .Xauthority
ファイルにインポートされると、GUI を実行できるようになります。
答え4
Gnome を搭載した Linux 上で実行している場合:
Xorg セッションで Gnome を起動します。
GDM(グリーター/ログインマネージャ)でユーザー名をクリックした後、ユーザー名をクリックし、パスワードを入力する前に小さな歯車をクリックしてGnome with Xorgを選択し、パスワードを入力します。