org.eclipse.swt.SWTError:ubuntuでeclipseを実行中にハンドルがなくなった[gtk_init_check()failed]


24

私は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

奇妙なことに、dbeaverを実行しようとしても同様の問題がありました。tmuxが正常に機能するためには、まずtmuxを終了する必要がありました。奇数
マッチョー

回答:


4

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

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

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

編集

問題は、SSHがSSHを使用してLinux VMにリモート接続し、X-ServerがWindows上にセットアップされておらず、X11転送が有効になっていないことでした。これを整理した後、OPでEclipseの実行に問題はないはずです。


質問を実際のバージョン情報で更新しました。まだ更新が必要かどうか教えてください。
SSH

さて、gtkにはバージョン3.8がありますので、最新バージョンにアップデートするのに害はありません。
-Jeight

3
なるほど..しかし、それを更新したとき、これが私が得たものsudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk です。パッケージgtkをなんとか見つけることができません。
SSH

あなたがするときに何を得るのsudo apt-cache search gtkですか?
Jeight

それはたくさんのことをしました。そして、すべてのものが私の画面に印刷されました。
SSH

10

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

技術的にはOPがVMのケースについて尋ねているのに、Google検索からこの質問につまずくかもしれない人のために、私はこの答えを追加しています。


@isakbobありがとう、これで私の問題は解決しました。他のどこにも答えが見つかりませんでした。回答として投稿したいかもしれません。
マタイ

@マシュー私のコメントは別の答えを正当化するとは思わない。この回答を編集して、コメントを追加しました。
イサクボブ

6

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

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

xauth extract cookie_file $DISPLAY

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

Cookieがユーザーのにインポートされたら。Xauthorityファイル、GUIを実行できる必要があります。


可能性もあります。そのホストはディスプレイをまったく持っていません。この場合、あなたはXvfbをインストールし、コマンドを使用して、仮想フレームバッファを作成することができます:Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 ソース
Staszek

3

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

$ 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

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

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

参照資料


0

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

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

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


-1

リモートマシンでIPV6を無効にした後、org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]commandを使用しているときにメッセージを受け取りましたssh -X ub-dev /opt/eclipse/eclipse。Ubuntu 14.04で修正するにはAddressFamily inet、ファイルに行を追加/etc/ssh/sshd_configしてsshを再起動しましたsudo service ssh restart

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.