org.eclipse.swt.SWTError: Tidak ada lagi pegangan [gtk_init_check () gagal] saat menjalankan eclipse di ubuntu


24

Saya mencoba membuka gerhana di VM ubuntu saya dengan perintah di bawah ini .. Dan begitu saya melakukannya, saya selalu mendapatkan pengecualian di bawah ini -

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.

jadi ketika saya pergi ke file log tertentu, ini adalah apa yang bisa saya lihat di 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)

Adakah yang tahu kesalahan apa yang terjadi? Atau apa yang harus saya lakukan untuk memperbaiki masalah ini? Terima kasih..

Memperbarui:-

Detail versi di bawah ini -

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

anehnya saya punya masalah serupa mencoba menjalankan dbeaver. Saya harus keluar dari tmux terlebih dahulu agar berfungsi dengan benar. Odd
matchew

Jawaban:


4

Saya pikir ini masalah dengan GTK. Periksa versi apa yang diinstal.

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

Jika tidak diinstal atau merupakan versi yang salah maka lakukan sudo apt-get install gtkatau lakukan sudo apt-get update.

EDIT

Masalahnya adalah SSH menggunakan SSH untuk melakukan remote ke Linux VM dan tidak memiliki X-Server yang diatur pada Windows dan tidak mengaktifkan penerusan X11. Setelah mendapatkan yang diluruskan OP seharusnya tidak memiliki masalah menjalankan Eclipse.


Saya memperbarui pertanyaan saya dengan informasi versi aktual .. Beritahu saya jika masih perlu melakukan pembaruan?
SSH

Nah ada versi 3.8 untuk gtk di luar sana sehingga tidak ada salahnya untuk memperbarui ke versi terbaru.
Jeight

3
Begitu ... Tapi ketika saya memperbaruinya, inilah yang saya dapatkan - sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Itu tidak dapat menemukan paket gtk entah bagaimana .. Ada ide?
SSH

Apa yang Anda dapatkan saat melakukan sudo apt-cache search gtk?
Jeight

Itu melakukan banyak hal .. Dan banyak hal tercetak di layar saya .. Tidak yakin apa yang mungkin Anda minati?
SSH

10

Ini juga kesalahan yang Anda dapatkan jika Anda mencoba memulai Eclipse melalui ssh tanpa meneruskan akses X. Yaitu, Anda lupa menjalankan ssh -X user@hostatau lupa untuk memasukkan ForwardX11 yesdalam ~/.ssh/configentri Anda untuk server.

Saya menambahkan jawaban ini untuk siapa saja yang mungkin menemukan pertanyaan ini dari pencarian Google meskipun secara teknis, OP bertanya tentang kasus VM.


@isakbob Terima kasih, ini menyelesaikan masalah saya. Tidak dapat menemukan jawabannya di tempat lain. Mungkin ingin mempostingnya sebagai jawaban.
Matius

@ Matius Saya tidak berpikir komentar saya menjamin jawaban lain. Saya baru saja mengedit jawaban ini untuk memasukkan komentar saya.
isakbob

6

Selain itu, ini mungkin juga disebabkan oleh aplikasi yang tidak memiliki otorisasi yang benar untuk ditampilkan ke remote X server. Ini biasanya terjadi ketika Anda masuk ke sesi ssh sebagai satu pengguna dan menjalankan perintah sebagai pengguna lain untuk meluncurkan aplikasi GUI. Misalnya ketika Anda masuk ke server jauh dan menjalankan sudoperintah. Untuk mengatasi masalah ini, Anda harus mendapatkan cookie ajaib dari pengguna yang masuk dan mengimpor cookie untuk pengguna yang menjalankan perintah.

Saat pengguna masuk ke server yang memiliki otoritas untuk ditampilkan X, jalankan:

xauth extract cookie_file $DISPLAY

Kemudian sebagai pengguna mencoba menjalankan gui: xauthmergecookie_file

Setelah cookie diimpor ke pengguna. Xauthorityfile, Anda harus dapat menjalankan GUI.


Ada juga kemungkinan, host itu hanya tidak memiliki tampilan sama sekali. Dalam hal ini Anda dapat menginstal Xvfb, dan membuat buffer bingkai virtual dengan perintah: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek

3

Saya mengalami masalah serupa ketika menginstal IBM Installation Manager (IBMIM) pada CentOS 6.x dan mengatasi masalah ini dengan menginstal beberapa paket yang merupakan penyebab kesalahan yang identik ini:

$ 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.

Solusi bagian 1 - paket yang hilang

$ sudo yum install \
   gtk2            \
   libXtst         \
   gnome-desktop   \
   xorg-x11-xauth  \
   dejavu-lgc-sans-fonts 

Sesuatu yang mirip dengan ini bisa dilakukan di Ubuntu juga.

Solusi bagian 2 - xauth

Masalah lain yang akan muncul adalah Anda mencoba menjalankan pemasang IBMIM (berbasis Eclipse) sebagai pengguna root via sudo. Ketika Anda melakukan ini, Anda akan mendapatkan kesalahan Aplikasi di atas dari installer:

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]

Untuk mengatasinya, Anda harus menggunakan xauth adduntuk menambahkan pengguna awal yang Anda masuk sebagai $HOME/.Xauthorityfile root .

Sebagai pengguna1:

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

Kemudian sebagai root:

$ 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

Referensi


0

Jika Anda menjalankan di linux dengan Gnome:

Mulai Gnome dengan sesi Xorg:

Setelah mengklik nama pengguna Anda di GDM (manajer penyapa / login), klik nama pengguna Anda dan sebelum memasukkan kata sandi, klik gigi kecil dan pilih Gnome dengan Xorg, lalu masukkan kata sandi Anda


-1

Setelah menonaktifkan IPV6 pada mesin jarak jauh saya menerima pesan org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]saat menggunakan perintah ssh -X ub-dev /opt/eclipse/eclipse. Untuk memperbaikinya pada Ubuntu 14.04 saya menambahkan baris AddressFamily inetke file /etc/ssh/sshd_configdan restart ssh sudo service ssh restart.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.