2013-08-07 13 views
7

Pracuję nad XUbuntu 13.04 i rozwijam aplikacje typu swing. Ponieważ właśnie chciałem wypróbować tę aplikację, natknąłem się na java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit przy starcie.java.lang.NoClassDefFoundError: Nie można zainicjować klasy java.awt.Toolkit

Znalazłem kilka pytań dotyczących vms serwera/klienta i zauważyłem, że mam maszynę VM i że dla Linux 64 nie ma już maszyny wirtualnej klienta. Ale jednak IMHO ten problem nie powinien zależeć od tego, na którym VM używam.

Czy ktoś jeszcze zauważył ten problem i go rozwiązał? Co ja robię źle? Z 64-bitowym jdk wszystko działa dobrze, ale kiedy próbuję użyć 32-bitowego jdk, uruchomienie nie powiedzie się.

Z góry dzięki!

PS: wersja Java jest 1.7.0_25 i samo z 1.7.0_09

EDIT

W trybie bez głowy, występują następujące wyjątki:

java.lang.reflect.InvocationTargetException 
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1272) 
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1247) 
    at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1349) 
    at Main.main(Main.java:218) 
Caused by: java.awt.HeadlessException 
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) 
    at java.awt.Window.<init>(Window.java:535) 
    at java.awt.Frame.<init>(Frame.java:420) 
    at java.awt.Frame.<init>(Frame.java:385) 
    at javax.swing.JFrame.<init>(JFrame.java:180) 
    at ..MyFrame.<init>(MyFrame.java:23) 
+1

Może być problem opisany [tutaj] (http://stackoverflow.com/questions/5576986/servlet-giving-error-java-lang-noclassdeffounderror) –

+0

Zastanowiłem się nad tą opcją, ale z '-Djava.awt.headless = true' istnieje kilka" Wyjątków HeadlessException ". Czy ta opcja ma również działać z aplikacjami typu swing? –

+0

Czy wyjątek jest podobny do opisanego [tutaj] (http://stackoverflow.com/questions/5218870/getting-a-headlessexception-no-x11-display-variable- was-set)? –

Odpowiedz

29

porządku, w końcu znalazłem odpowiedź. Dzięki za niedrogie! Problem polega na tym, że zainstalowałem libxtst6, ale tylko wersję 64-bitową.

sudo apt-get install libxtst6:i386 załatwiłem sprawę.

Jak znalazłem tę odpowiedź? I ldd ed wokół trochę, ale nic, jak widać poniżej:

$ ldd jdk1.7.0_25_x86/jre/lib/i386/xawt/libmawt.so 
    linux-gate.so.1 => (0xf7769000) 
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf76ee000) 
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf76c2000) 
    libawt.so => jdk1.7.0_25_x86/jre/lib/i386/xawt/../libawt.so (0xf760f000) 
    libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf75fd000) 
    libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf74c9000) 
    libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf74bf000) 
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf74ba000) 
    libXtst.so.6 => /usr/lib/i386-linux-gnu/libXtst.so.6 (0xf74b2000) 
    libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xf74a2000) 
    libjava.so => jdk1.7.0_25_x86/jre/lib/i386/xawt../libjava.so (0xf747e000) 
    libjvm.so => not found 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf72d5000) 
    /lib/ld-linux.so.2 (0xf776a000) 
    libjvm.so => not found 
    libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf72b3000) 
    libjvm.so => not found 
    libverify.so => java/jdk1.7.0_25_x86/jre/lib/i386/xawt/../libverify.so (0xf72a7000) 
    libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf72a2000) 
    libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf729b000) 
    libjvm.so => not found 

Więc to był moment, kiedy skończyło ufając mojego IDE i rozpoczął przykładową aplikację w linii poleceń. A linia poleceń znowu był miły dla mnie:

$ jdk1.7.0_25_x86/bin/java Main 
Exception in thread "main" java.lang.UnsatisfiedLinkError: jdk1.7.0_25_x86/jre/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843) 
    at java.lang.Runtime.load0(Runtime.java:795) 
    at java.lang.System.load(System.java:1061) 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:849) 
    at java.lang.System.loadLibrary(System.java:1087) 
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67) 
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.awt.Toolkit.loadLibraries(Toolkit.java:1646) 
    at java.awt.Toolkit.<clinit>(Toolkit.java:1668) 
    at java.awt.Component.<clinit>(Component.java:595) 
    at Main.main(Main.java:5) 
+1

poprawiony problem: ' Wyjątek w wątku "główny" java.lang.NoClassDefFoundError: Nie można zainicjować klasy java .awt.Toolkit' – ngakak

Powiązane problemy