org.eclipse.swt.SWTError: 우분투에서 Eclipse를 실행할 때 더 이상 핸들이 없습니다. [gtk_init_check() 실패]

org.eclipse.swt.SWTError: 우분투에서 Eclipse를 실행할 때 더 이상 핸들이 없습니다. [gtk_init_check() 실패]

다음 명령을 사용하여 우분투 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에 원격으로 액세스하고 있는데 Windows에 X-Server가 설정되어 있지 않고 X11 전달이 활성화되어 있지 않다는 것입니다. 이 문제가 해결되면 OP에서 Eclipse를 실행하는 데 문제가 없어야 합니다.

답변3

또한 이 문제는 응용 프로그램이 원격 장치에 표시할 수 있는 올바른 권한을 갖고 있지 않기 때문에 발생할 수도 있습니다 X server. 이는 일반적으로 한 사용자로 ssh 세션에 로그인하고 다른 사용자로 명령을 실행하여 GUI 응용 프로그램을 시작할 때 발생합니다. 예를 들어, 원격 서버에 로그인하여 sudo명령을 실행하는 경우입니다. 이 문제를 해결하려면 로그인한 사용자의 매직 쿠키를 가져와서 명령을 실행하는 사용자의 쿠키를 가져와야 합니다.

사용자가 표시 권한이 있는 서버에 로그인하면 다음을 X실행합니다.

xauth extract cookie_file $DISPLAY

그런 다음 사용자가 gui를 실행하려고 하면 xauth다음과 같이 병합합니다 .cookie_file

쿠키를 사용자의 .file 로 가져오면 XauthorityGUI를 실행할 수 있습니다.

답변4

Linux에서 Gnome을 실행하는 경우:

Xorg 세션을 사용하여 Gnome을 시작하십시오:

GDM(Welcome/Login Manager)에서 사용자 이름을 클릭한 후 사용자 이름을 클릭하고 비밀번호를 입력하기 전에 작은 기어를 클릭한 후 Gnome with Xorg를 선택하고 비밀번호를 입력하세요.

관련 정보