org.eclipse.swt.SWTError: ไม่มีการจัดการอีก [gtk_init_check () ล้มเหลว] ขณะที่เรียกใช้ eclipse บน ubuntu


24

ฉันพยายามที่จะเปิด eclipse ใน ubuntu VM ด้วย commmand ด้านล่าง .. และทันทีที่ฉันทำอย่างนั้นฉันมักจะได้รับข้อยกเว้นด้านล่าง -

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 ก่อนเพื่อให้ทำงานได้อย่างถูกต้อง Odd
matchew

คำตอบ:


4

ฉันคิดว่านี่เป็นปัญหากับ gtk ตรวจสอบเวอร์ชันที่ติดตั้ง

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

หากยังไม่ได้ติดตั้งหรือเป็นรุ่นที่ไม่ถูกต้องแล้วทำหรือทำsudo apt-get install gtksudo apt-get update

แก้ไข

ปัญหาคือว่า SSH ใช้ SSH เพื่อรีโมทเข้าไปใน Linux VM และไม่มี X-Server ติดตั้งบน Windows และไม่มีการเปิดใช้งานการส่งต่อ X11 หลังจากทำให้ OP ตรงนั้นไม่ควรมีปัญหาใด ๆ ในการรัน Eclipse


ฉันอัพเดตคำถามด้วยข้อมูลเวอร์ชันจริง .. แจ้งให้ฉันทราบหากฉันยังต้องการอัปเดตหรือไม่
SSH

มีรุ่น 3.8 สำหรับ gtk ออกมีดังนั้นจึงไม่เจ็บที่จะอัปเดตเป็นรุ่นล่าสุด
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

นี่เป็นข้อผิดพลาดที่คุณได้รับหากคุณพยายามเริ่ม Eclipse บน ssh โดยไม่ส่งต่อการเข้าถึง X นั่นคือคุณลืมที่จะเรียกใช้ssh -X user@hostหรือลืมที่จะรวมForwardX11 yesไว้ใน~/.ssh/configรายการของคุณสำหรับเซิร์ฟเวอร์

ฉันกำลังเพิ่มคำตอบนี้สำหรับทุกคนที่อาจสะดุดคำถามนี้จากการค้นหาของ Google แม้ว่าในทางเทคนิคแล้ว OP จะถามเกี่ยวกับกรณี VM


@isakbob ขอบคุณนี่ช่วยแก้ไขปัญหาของฉันได้แล้ว ไม่พบคำตอบที่อื่น อาจต้องการโพสต์เป็นคำตอบ
Matthew

@ Matewew ฉันไม่คิดว่าความคิดเห็นของฉันรับประกันคำตอบอีก ฉันเพิ่งแก้ไขคำตอบนี้เพื่อรวมความคิดเห็นของฉัน
isakbob

6

X serverนอกจากนี้ยังอาจเกิดขึ้นจากการประยุกต์ใช้ที่ไม่ได้มีการขออนุมัติที่ถูกต้องในการแสดงผลระยะไกล สิ่งนี้มักจะเกิดขึ้นเมื่อคุณล็อกอินเข้าสู่เซสชัน ssh ในฐานะผู้ใช้หนึ่งคน ตัวอย่างเช่นเมื่อคุณเข้าสู่เซิร์ฟเวอร์ระยะไกลและดำเนินการsudoคำสั่ง ในการแก้ไขปัญหานี้คุณจะต้องได้รับคุกกี้มายากลของผู้ใช้ที่เข้าสู่ระบบและนำเข้าคุกกี้สำหรับผู้ใช้ที่รันคำสั่ง

ในขณะที่ผู้ใช้ล็อกอินเข้าสู่เซิร์ฟเวอร์ที่มีสิทธิ์แสดงผลให้Xรัน:

xauth extract cookie_file $DISPLAY

เมื่อผู้ใช้พยายามเรียกใช้ gui: xauthmergecookie_file

เมื่อคุกกี้ถูกนำเข้าสู่ผู้ใช้ Xauthorityไฟล์คุณควรจะสามารถใช้งาน GUI ได้


นอกจากนี้ยังเป็นไปได้ว่าโฮสต์นั้นไม่ได้แสดงเลย ในกรณีนี้คุณสามารถติดตั้ง Xvfb และสร้างเฟรมบัฟเฟอร์เสมือนด้วยคำสั่ง: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
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

ปัญหาอื่น ๆ ที่จะเกิดขึ้นคือคุณกำลังพยายามรันตัวติดตั้ง IBMIM (อิงตาม Eclipse) ในฐานะผู้ใช้รูทผ่าน sudo เมื่อคุณทำสิ่งนี้คุณจะได้รับข้อผิดพลาดของแอปพลิเคชันด้านบนจากตัวติดตั้ง:

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เพื่อเพิ่มผู้ใช้ครั้งแรกที่คุณเข้าสู่ระบบในฐานะ$HOME/.Xauthorityไฟล์ของรูท

ในฐานะผู้ใช้ 1:

$ 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

หากคุณใช้งาน linux กับ Gnome:

เริ่ม Gnome ด้วยเซสชัน Xorg:

หลังจากคลิกชื่อผู้ใช้ของคุณใน GDM (ตัวจัดการ / ตัวจัดการการเข้าสู่ระบบ) ให้คลิกชื่อผู้ใช้ของคุณและก่อนที่จะป้อนรหัสผ่านคลิกที่เฟืองเล็ก ๆ แล้วเลือก Gnome ด้วย Xorg จากนั้นป้อนรหัสผ่านของคุณ


-1

หลังจากที่ปิดการใช้งาน IPV6 บนเครื่องระยะไกลที่ฉันได้รับข้อความเมื่อใช้คำสั่งorg.eclipse.swt.SWTError: No more handles [gtk_init_check() failed] ssh -X ub-dev /opt/eclipse/eclipseการแก้ไขบน Ubuntu 14.04 ฉันเพิ่มเส้นAddressFamily inetไปยังแฟ้ม/etc/ssh/sshd_configและ sudo service ssh restartSSH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.