2013-08-07 18 views
7

Ich arbeite an XUbuntu 13.04 und entwickle Swing-Anwendungen. Da ich diese Anwendung nur ausprobieren wollte, lief ich beim Start auf java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit.java.lang.NoClassDefFoundError: Klasse konnte nicht initialisiert werden java.awt.Toolkit

Ich habe mehrere Fragen über Server/Client-VMs und bemerkte, dass ich eine Server-VM habe und dass für Linux 64 gibt es keine Client-VM mehr. Aber trotzdem IMHO sollte dieses Problem nicht davon abhängen, auf welcher VM ich läuft.

Hat jemand anderes dieses Problem bemerkt und es gelöst? Was mache ich falsch? Mit 64bit jdk funktioniert alles gut, aber wenn ich versuche, die 32bit jdk zu verwenden, scheitert der Start.

Vielen Dank im Voraus!

PS: Java-Version ist 1.7.0_25 und gleichen mit 1.7.0_09

EDIT

Wenn Headless Modus verwenden, werden die folgenden Ausnahmen auftreten:

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

Kann das Problem [hier] beschrieben werden (http://stackoverflow.com/questions/5576986/servlet-giving-error-java-lang-noclassdeffounderror) –

+0

Ich habe diese Option erwogen, aber mit '-Djava.awt.headless = true' gibt es ein paar' HeadlessException's. Soll diese Option auch mit Swing-Anwendungen funktionieren? –

+0

Ist die Ausnahme ähnlich der hier beschriebenen [http://stackoverflow.com/questions/5218870/getting-a-headlessexception-no-x11-display-variable-wa-set)? –

Antwort

29

Okay, schließlich habe ich festgestellt das Antworten. Danke für das leisten! Das Problem ist, dass ich libxtst6 installiert habe, aber nur die 64bit-Version davon.

sudo apt-get install libxtst6:i386 hat den Trick für mich getan.

Wie habe ich diese Antwort gefunden? Ich ldd ed um ein bisschen, aber nichts, wie Sie im folgenden sehen:

$ 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 

so dass der Punkt war, als ich meine IDE und begann in der Befehlszeile eine Beispielanwendung beendet zu vertrauen. Und die Befehlszeile war wieder nett zu mir:

$ 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

behobenes Problem: ' Ausnahme im Thread "main" java.lang.NoClassDefFoundError: Konnte Java nicht initialisieren .awt.Toolkit' – ngakak