web-dev-qa-db-ja.com

org.Eclipse.swt.SWTError:ubuntuでEclipseを実行しているときにハンドルがなくなりました[gtk_init_check()が失敗しました]

私はubuntuでEclipseを開こうとしていましたVM以下のコマンドを使用して..そして、それを実行するとすぐに、常に以下の例外が発生します-

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
24
SSH

これはgtkの問題だと思います。インストールされているバージョンを確認します。

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

インストールされていないか、バージョンが正しくない場合は、Sudo apt-get install gtkまたはSudo apt-get update

[〜#〜]編集[〜#〜]

問題は、SSHがSSHを使用してLinuxにリモート接続していることでしたVMで、WindowsにXサーバーがセットアップされておらず、X11転送が有効になっていない。 OPはEclipseの実行に問題があってはなりません。

4
Jeight

これは、Xアクセスを転送せずにssh経由でEclipseを起動しようとした場合に発生するエラーでもあります。つまり、実行するのを忘れたssh -X user@Hostまたは含めることを忘れたForwardX11 yesあなたの~/.ssh/configサーバーのエントリ。

技術的に、OPがVMケースについて尋ねているにもかかわらず、Google検索からこの質問に出くわす可能性がある人のために、この回答を追加します。

10
user837451

さらに、これは、アプリケーションがリモートに表示する正しい権限を持っていないことによっても発生する可能性がありますX server。これは通常、1人のユーザーとしてsshセッションにログインし、別のユーザーとしてコマンドを実行してGUIアプリケーションを起動したときに発生します。たとえば、リモートサーバーにログインしてSudoコマンドを実行するとします。この問題を解決するには、ログインしているユーザーのマジックCookieを取得し、コマンドを実行しているユーザーのCookieをインポートする必要があります。

Xを表示する権限を持つサーバーにログインするユーザーとして、次を実行します。

xauth extract cookie_file $DISPLAY

次に、GUIを実行しようとしているユーザーとして:xauth merge cookie_file

Cookieがユーザーの.Xauthorityファイルにインポートされると、GUIを実行できるようになります。

6
user100341

CentOS 6.xにIBM Installation Manager(IBMIM)をインストールしているときに同様の問題に遭遇し、この同じエラーの原因であるいくつかのパッケージをインストールすることで問題を回避しました。

$ 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

発生するもう1つの問題は、IBMIMインストーラー(Eclipseベース)をSudo経由でrootユーザーとして実行しようとしていることです。これを行うと、インストーラーから上記のアプリケーションエラーが発生します。

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ファイルに追加する必要があります。

User1として:

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

次にルートとして:

$ 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

参考文献

3
slm

LinuxでGnomeを実行している場合:

XorgセッションでGnomeを開始します。

GDM(グリーター/ログインマネージャー)でユーザー名をクリックした後、ユーザー名をクリックし、パスワードを入力する前に小さな歯車をクリックして、XorgでGnomeを選択してから、パスワードを入力します。

0
warhansen