org.eclipse.swt.SWTError : 우분투에서 이클립스를 실행하는 동안 더 이상 핸들 [gtk_init_check () 실패]이 없습니다


24

나는 아래 명령으로 내 우분투 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

이상하게도 dbeaver를 실행하려고하는 비슷한 문제가있었습니다. 제대로 작동하려면 먼저 tmux를 종료해야했습니다. 홀수
matchew

답변:


4

나는 이것이 gtk에 문제가 있다고 생각한다. 설치된 버전을 확인하십시오.

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

설치되어 있지 않거나 잘못된 버전 인 경우 a sudo apt-get install gtk또는을 수행하십시오 sudo apt-get update.

편집하다

문제는 SSH가 SSH를 사용하여 Linux VM에 원격으로 연결했으며 Windows에 X-Server가 설정되어 있지 않고 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.

기술적으로도 Google 검색 에서이 질문에 걸려 넘어 질 수있는 사람을 위해이 답변을 추가하고 있지만 OP는 VM 사례에 대해 묻고 있습니다.


@ isakbob 감사합니다, 이것은 내 문제를 해결했습니다. 다른 곳에서는 답을 찾을 수 없습니다. 답변으로 게시하고 싶을 수도 있습니다.
마태 복음

@ Matthew 내 의견에 다른 대답이 필요하다고 생각하지 않습니다. 내 의견을 포함하도록이 답변을 편집했습니다.
isakbob

6

또한 응용 프로그램에 올바른 원격 표시 권한이없는 경우에도 발생할 수 있습니다 X server. 이것은 일반적으로 한 사용자로 ssh 세션에 로그인하고 GUI 응용 프로그램을 시작하기 위해 다른 사용자로 명령을 실행할 때 발생합니다. 예를 들어 원격 서버에 로그인하고 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

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 

우분투에서도 이와 비슷한 것을 할 수있었습니다.

해결 방법 2-xauth

발생할 다른 문제는 sudo를 통해 루트 사용자로 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로그인 한 초기 사용자를 루트 $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 세션으로 그놈을 시작하십시오 :

GDM (인사 / 로그인 관리자)에서 사용자 이름을 클릭 한 후 사용자 이름을 클릭하고 비밀번호를 입력하기 전에 작은 기어를 클릭하고 Xorg와 함께 Gnome을 선택한 다음 비밀번호를 입력하십시오.


-1

원격 컴퓨터에서 IPV6을 비활성화 한 후 org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]command 사용시 메시지가 나타납니다 ssh -X ub-dev /opt/eclipse/eclipse. 우분투 14.04에서 수정하기 위해 AddressFamily inet파일 에 줄 을 추가 /etc/ssh/sshd_config하고 ssh를 다시 시작했습니다 sudo service ssh restart.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.