Próbowałem otworzyć zaćmienie w mojej maszynie wirtualnej Ubuntu za pomocą poniższego polecenia .. I jak tylko to zrobię, zawsze otrzymuję poniższy wyjątek -
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.
więc po przejściu do tego konkretnego pliku dziennika widzę to w dzienniku -
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)
Czy ktoś wie, co się stało? Lub co mam zrobić, aby rozwiązać ten problem? Dzięki..
Aktualizacja:-
Szczegóły wersji poniżej -
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
Odpowiedzi:
Myślę, że to jest problem z gtk. Sprawdź, która wersja jest zainstalowana.
dpkg -l libgtk[0-9]* | grep ^i
Jeśli nie jest zainstalowany lub jest niepoprawną wersją, wykonaj a
sudo apt-get install gtk
lub zsudo apt-get update
.EDYTOWAĆ
Problem polegał na tym, że SSH używało SSH do zdalnego sterowania na maszynę wirtualną z systemem Linux i nie miało skonfigurowanego X-Servera w systemie Windows i nie miało włączonego przekazywania X11. Po wyjaśnieniu tego OP nie powinien mieć żadnych problemów z uruchomieniem Eclipse.
źródło
sudo apt-get install gtk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package gtk
. Nie jest w stanie jakoś zlokalizować pakietu gtk ... Masz pomysł?sudo apt-cache search gtk
?Jest to również błąd, który pojawia się, gdy próbujesz uruchomić Eclipse przez ssh bez przekazywania dostępu do X. To znaczy, że zapomniałeś uruchomić
ssh -X user@host
lub zapomniał zawieraćForwardX11 yes
w swoim~/.ssh/config
wejściem na serwer.Dodam tę odpowiedź dla każdego, kto może natknąć się na to pytanie z wyszukiwarki Google, nawet jeśli technicznie rzecz biorąc, OP pyta o przypadek maszyny wirtualnej.
źródło
Ponadto może to być również spowodowane tym, że aplikacja nie ma prawidłowej autoryzacji do wyświetlania na pilocie
X server
. Zwykle dzieje się tak, gdy zalogujesz się do sesji ssh jako jeden użytkownik i wykonasz polecenie jako inny użytkownik, aby uruchomić aplikację GUI. Na przykład po zalogowaniu się do zdalnego serwera i wykonaniusudo
polecenia. Aby rozwiązać ten problem, musisz uzyskać magiczny plik cookie logującego się użytkownika i zaimportować plik cookie dla użytkownika uruchamiającego polecenie.Jako użytkownik logujący się na serwerze, który ma uprawnienia do wyświetlania
X
, uruchom:Następnie, gdy użytkownik próbuje uruchomić GUI:
xauth
scalićcookie_file
Po zaimportowaniu pliku cookie do użytkownika.
Xauthority
plik, powinieneś być w stanie wykonać GUI.źródło
Xvfb :1 -ac -screen 0 1024x768x8 &
export DISPLAY=:1
sourceWystąpił podobny problem podczas instalowania programu IBM Installation Manager (IBMIM) na CentOS 6.x i obejrzałem ten problem, instalując kilka pakietów, które były przyczyną tego samego błędu:
Rozwiązanie część 1 - brakujące pakiety
Coś podobnego do tego można było również zrobić na Ubuntu.
Rozwiązanie część 2 - Xauth
Innym problemem, który się pojawi, jest próba uruchomienia instalatora IBMIM (opartego na Eclipse) jako użytkownik root za pośrednictwem sudo. Gdy to zrobisz, otrzymasz powyższy błąd aplikacji z instalatora:
Aby obejść ten problem, musisz użyć
xauth add
pierwszego zalogowanego użytkownika jako$HOME/.Xauthority
pliku roota .Jako użytkownik 1:
Następnie jako root:
Referencje
źródło
Jeśli używasz Linuksa z Gnome:
Rozpocznij gnoma sesją Xorg:
Po kliknięciu swojej nazwy użytkownika w GDM (greeter / manager logowania), kliknij swoją nazwę użytkownika, a przed wprowadzeniem hasła kliknij mały sprzęt i wybierz Gnome z Xorg, a następnie wprowadź hasło
źródło
Po wyłączeniu IPV6 na zdalnym komputerze otrzymałem komunikat
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
przy użyciu poleceniassh -X ub-dev /opt/eclipse/eclipse
. Aby naprawić Ubuntu 14.04, dodałem wierszAddressFamily inet
do pliku/etc/ssh/sshd_config
i ponownie uruchomiłem sshsudo service ssh restart
.źródło