org.eclipse.swt.SWTError: Không còn xử lý [gtk_init_check () không thành công] trong khi chạy nhật thực trên ubfox


24

Tôi đã cố gắng mở nhật thực trong máy ảo ub Ubuntu của mình với thông số bên dưới .. Và ngay khi tôi làm điều đó, tôi luôn nhận được ngoại lệ dưới đây -

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.

Vì vậy, khi tôi đi đến tệp nhật ký cụ thể đó, đây là những gì tôi có thể thấy trong nhật ký -

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)

Có ai biết những gì sai đã xảy ra? Hoặc những gì tôi phải làm để khắc phục vấn đề này? Cảm ơn..

Cập nhật: -

Chi tiết phiên bản bên dưới -

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

thật kỳ lạ, tôi đã gặp một vấn đề tương tự khi cố gắng chạy dbeaver. Tôi đã phải thoát tmux trước để nó hoạt động bình thường. Odd
trận đấu

Câu trả lời:


4

Tôi nghĩ rằng đây là một vấn đề với gtk. Kiểm tra phiên bản nào được cài đặt.

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

Nếu nó không được cài đặt hoặc là phiên bản không chính xác thì hãy thực hiện sudo apt-get install gtkhoặc thực hiện sudo apt-get update.

CHỈNH SỬA

Vấn đề là SSH đã sử dụng SSH để điều khiển từ xa vào máy ảo Linux và không cài đặt X-Server trên Windows và không bật chuyển tiếp X11. Sau khi hiểu rõ, OP không nên có bất kỳ vấn đề nào khi chạy Eclipse.


Tôi đã cập nhật câu hỏi của mình với thông tin phiên bản thực tế .. Hãy cho tôi biết nếu tôi vẫn cần cập nhật?
SSH

Vâng, có một phiên bản 3.8 cho gtk ngoài đó để không thể cập nhật lên phiên bản mới nhất.
Jeight

3
Tôi hiểu rồi .. Nhưng khi tôi cập nhật thì đây là thứ tôi có - sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk . Không thể định vị gói gtk bằng cách nào đó .. Có ý kiến ​​gì không?
SSH

Bạn nhận được gì khi bạn làm một sudo apt-cache search gtk?
Jeight

Nó đã làm rất nhiều thứ .. Và cả đống thứ được in ra trên màn hình của tôi .. Không chắc bạn có thể quan tâm đến cái gì?
SSH

10

Đây cũng là lỗi bạn gặp phải nếu bạn cố gắng khởi động Eclipse qua ssh mà không chuyển tiếp truy cập X. Tức là bạn đã quên chạy ssh -X user@hosthoặc quên đưa ForwardX11 yesvào ~/.ssh/configmục nhập của bạn cho máy chủ.

Tôi đang thêm câu trả lời này cho bất kỳ ai có thể vấp phải câu hỏi này từ một tìm kiếm của Google mặc dù về mặt kỹ thuật, OP đang hỏi về trường hợp VM.


@isakbob Cảm ơn bạn, điều này đã giải quyết vấn đề của tôi. Không thể tìm thấy câu trả lời ở bất cứ nơi nào khác. Có thể muốn gửi nó như là một câu trả lời.
Matthew

@Matthew Tôi không nghĩ bình luận của tôi đảm bảo một câu trả lời khác. Tôi chỉ chỉnh sửa câu trả lời này để bao gồm nhận xét của tôi.
isakbob

6

Ngoài ra, điều này cũng có thể do ứng dụng không có quyền chính xác để hiển thị cho điều khiển từ xa X server. Điều này thường xảy ra khi bạn đăng nhập vào phiên ssh với tư cách một người dùng và thực thi lệnh với tư cách người dùng khác để xử lý ứng dụng GUI. Ví dụ khi bạn đăng nhập vào máy chủ từ xa và thực thi một sudolệnh. Để giải quyết vấn đề này, bạn sẽ cần lấy cookie ma thuật của người dùng đăng nhập và nhập cookie cho người dùng đang chạy lệnh.

Khi người dùng đăng nhập vào máy chủ có quyền hiển thị X, hãy chạy:

xauth extract cookie_file $DISPLAY

Sau đó, khi người dùng cố gắng chạy gui: xauthmergecookie_file

Khi cookie được nhập vào người dùng. Xauthoritytập tin, bạn sẽ có thể thực thi GUI.


Cũng có thể, máy chủ đó chỉ không hiển thị. Trong trường hợp này, bạn có thể cài đặt Xvfb và tạo bộ đệm khung ảo bằng các lệnh: Xvfb :1 -ac -screen 0 1024x768x8 & export DISPLAY=:1 source
Staszek

3

Tôi gặp phải một vấn đề tương tự trong khi cài đặt Trình quản lý cài đặt IBM (IBMIM) trên CentOS 6.x và đã khắc phục sự cố bằng cách cài đặt một số gói là nguyên nhân gây ra lỗi giống hệt này:

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

Giải pháp phần 1 - gói thiếu

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

Một cái gì đó tương tự như thế này cũng có thể được thực hiện trên Ubuntu.

Giải pháp phần 2 - xauth

Vấn đề khác sẽ phát sinh là bạn đang cố chạy trình cài đặt IBMIM (dựa trên Eclipse) với tư cách là người dùng root thông qua sudo. Khi bạn làm điều này, bạn sẽ nhận được lỗi Ứng dụng ở trên từ trình cài đặt:

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]

Để khắc phục điều này, bạn sẽ cần sử dụng xauth addđể thêm người dùng ban đầu mà bạn đã đăng nhập vào $HOME/.Xauthoritytập tin gốc .

Là người dùng1:

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

Sau đó là 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

Tài liệu tham khảo


0

Nếu bạn đang chạy trên linux với Gnome:

Bắt đầu một Gnome với phiên Xorg:

Sau khi nhấp vào tên người dùng của bạn trong GDM (người chào / người quản lý đăng nhập), nhấp vào tên người dùng của bạn và trước khi nhập mật khẩu, nhấp vào thiết bị nhỏ và chọn Gnome với Xorg, sau đó nhập mật khẩu của bạn


-1

Sau khi tắt IPV6 trên máy từ xa, tôi nhận được tin nhắn org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]khi sử dụng lệnh ssh -X ub-dev /opt/eclipse/eclipse. Để sửa lỗi trên Ubuntu 14.04, tôi đã thêm dòng AddressFamily inetvào tệp /etc/ssh/sshd_configvà khởi động lại ssh sudo service ssh restart.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.