Mal wieder der classpath.

Status
Nicht offen für weitere Antworten.

maxf

Mitglied
Hallo,

ich habe folgendes Probelm: ein Verzeichnis sieht so aus:
Code:
drwxr-xr-x 2 maxf users    4096  7. Mai 19:19 ./
drwxr-x--- 7 maxf users    4096  7. Mai 18:45 ../
-rw-r--r-- 1 maxf users   29072 12. Feb 14:52 libswt-atk-gtk-3236.so
-rw-r--r-- 1 maxf users    5216 12. Feb 14:52 libswt-awt-gtk-3236.so
-rw-r--r-- 1 maxf users   50136 12. Feb 14:52 libswt-cairo-gtk-3236.so
-rw-r--r-- 1 maxf users   13432 12. Feb 14:52 libswt-glx-gtk-3236.so
-rw-r--r-- 1 maxf users   13944 12. Feb 14:52 libswt-gnome-gtk-3236.so
-rw-r--r-- 1 maxf users  270128 12. Feb 14:52 libswt-gtk-3236.so
-rw-r--r-- 1 maxf users   28176 12. Feb 14:52 libswt-mozilla14-profile-gcc3-gtk-3236.so
-rw-r--r-- 1 maxf users   28176 12. Feb 14:52 libswt-mozilla17-profile-gcc3-gtk-3236.so
-rw-r--r-- 1 maxf users   23608 12. Feb 14:52 libswt-mozilla18-profile-gcc3-gtk-3236.so
-rw-r--r-- 1 maxf users   53312 12. Feb 14:52 libswt-mozilla-gcc3-gtk-3236.so
-rw-r--r-- 1 maxf users  397424 12. Feb 14:52 libswt-pi-gtk-3236.so
-rw-r----- 1 maxf users  457046 18. Apr 16:26 RichMoodMessageTool.jar
-rw-r--r-- 1 maxf users 1660314  7. Mai 19:19 swt.jar
Wenn ich nun versuche, die Klasse org.de.rmmt.Main(die in RichMoodMessageTool.jar liegt) aufzurufen, erhalte ich folgende Fehlermeldung:
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt>
Woran kann das liegen? Ich renn jetzt schon seit 2 Stunden im Kreis
skype_headbang.gif
 
hmm, folgende Varianten gehen auch nicht :?:
Code:
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * -Djava.library.path=libswt-awt-gtk-3236.so org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * -Djava.library.path=./libswt-awt-gtk-3236.so org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * -Djava.library.path=/home/maxf/Documents/workspaces/workspace2/Rich\ Mood\ Message\ Tool/swt/libswt-awt-gtk-3236.so org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * -Djava.library.path='/home/maxf/Documents/workspaces/workspace2/Rich\ Mood\ Message\ Tool/swt/libswt-awt-gtk-3236.so' org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt> java -cp * -Djava.library.path='/home/maxf/Documents/workspaces/workspace2/Rich Mood Message Tool/swt/libswt-awt-gtk-3236.so' org.de.rmmt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
maxf@Max:~/Documents/workspaces/workspace2/Rich Mood Message Tool/swt>
Irgenwie stehe ich auf dem Schlauch 🙁
 
wenn das:
Exception in thread "main" java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
als fehlermeldung kommt, hast du irgendnen mist in deinem code stehen 😉
 
wenn die so nicht gefunden wird, wird ein UnsatisfiedLinkError geworfen,
java.lang.NoClassDefFoundError: libswt-awt-gtk-3236/so
sieht nach Class.forName("libswt-awt-gtk-3236.so"); aus :autsch: ???:L

edit: ps: der java.library.path muss übrigens auf ein verzeichnis zeigen, nicht auf eine datei ???:L
 
Roar hat gesagt.:
sieht nach Class.forName("libswt-awt-gtk-3236.so"); aus :autsch: ???:L
Nein, diese Libary wird irgendwie SWT intern geladen, warscheinlich mit System.loadLibary... Ich werde heute Mittag wenn ich zu Hause bin noch ein wenig herumprobieren... 🙂
 
Ich habe das JDK 1.6.0_01 unter Open Suse 10.2 x86_64. Wie gesagt, ich kann das erst heute Nachmittag testen, sitzte hier grade in der Schule im Info-Unterricht.
 
Ja das Problem liegt bei SWT.
Bei Linux kann ich es Dir nicht so genau sagen. Kopier mal Deine Fehlermeldung und such direkt danach bei Google, bzw such mal, wie das genau mit SWT geht. Die .so muss glaube ich vom Linker gefunden werden können, sprich da eingetragen werden, was bei Windows die "Path" Umgebungsvariable ist.

Zum Vergleich: Bei Windows muss die entsprechenden DLL halt auch im Windows Verzeichnis oder eben im Path zu finden sein.
 
Also mir kommt ehrlich gesagt das
Code:
java -cp *
spanisch vor.
Gib mal den classpath explizit an, also z.B:
Code:
java -cp .:RichMoodMessageTool.jar:swt.jar
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben