klimaschreck
Well-Known Member
Hallo zusammen,
ich möchte gerne zunächst ein kleines Java-Programm mit SWT-GUI erstellen, das ohne eclipse ausgeführt werden soll. Mit eclipse läuft es. Zudem will ich es als jar starten, da ich vorhabe, ein Programm mit weiteren Klassen zu erstellen. Wenn es schon mit einer Klasse nicht klappt, wird es auch mit mehreren Klassen nicht funktionieren.
Die Datei HelloWorld.java kann ich übersetzen und auch eine jar-Datei erzeugen.
Wenn ich nun den folgenden Aufruf starte, erhalte ich diese Fehlermeldung:
Es werden offensichtlich die GTK-libs nicht gefunden. Wenn ich dagegen den Aufruf abändere in
funktioniert es.
Im Verzeichnis sind diese libs enthalten:
Diese Lösung funktioniert zwar, ist aber sehr umständlich. Besser wäre es natürlich, die Dateien auch in das JAR reinzupacken, damit ich nur noch eine Datei habe. Ich habe z.B. ein Archiv org.eclipse.swt.gtk.freebsd.x86_3.2.2.v3236.jar in dem alles drin steckt. Wenn ich dies in mein neues JAR packe, findet er keine Dateien mehr. Ich weiß auch nicht genau, wie ich im Manifest darauf verweisen sollte. Ich hatte "Class-Path: org.eclipse.swt.gtk.freebsd.x86_3.2.2.v3236.jar" hinzugefügt. Vielleicht war das auch falsch.
Habt ihr eine Idee, wie es klappen könnte?
Viele Grüße
Rainer
ich möchte gerne zunächst ein kleines Java-Programm mit SWT-GUI erstellen, das ohne eclipse ausgeführt werden soll. Mit eclipse läuft es. Zudem will ich es als jar starten, da ich vorhabe, ein Programm mit weiteren Klassen zu erstellen. Wenn es schon mit einer Klasse nicht klappt, wird es auch mit mehreren Klassen nicht funktionieren.
Die Datei HelloWorld.java kann ich übersetzen und auch eine jar-Datei erzeugen.
Wenn ich nun den folgenden Aufruf starte, erhalte ich diese Fehlermeldung:
Code:
java -jar example.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3236 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:126)
at HelloWorld.main(HelloWorld.java:10)
Es werden offensichtlich die GTK-libs nicht gefunden. Wenn ich dagegen den Aufruf abändere in
Code:
java -Djava.library.path=/tmp/swt-libs -jar example.jar
funktioniert es.
Im Verzeichnis sind diese libs enthalten:
Code:
libswt-atk-gtk-3236.so
libswt-awt-gtk-3236.so
libswt-cairo-gtk-3236.so
libswt-glx-gtk-3236.so
libswt-gnome-gtk-3236.so
libswt-gtk-3236.so
libswt-mozilla-gtk-3236.so
libswt-pi-gtk-3236.so
Diese Lösung funktioniert zwar, ist aber sehr umständlich. Besser wäre es natürlich, die Dateien auch in das JAR reinzupacken, damit ich nur noch eine Datei habe. Ich habe z.B. ein Archiv org.eclipse.swt.gtk.freebsd.x86_3.2.2.v3236.jar in dem alles drin steckt. Wenn ich dies in mein neues JAR packe, findet er keine Dateien mehr. Ich weiß auch nicht genau, wie ich im Manifest darauf verweisen sollte. Ich hatte "Class-Path: org.eclipse.swt.gtk.freebsd.x86_3.2.2.v3236.jar" hinzugefügt. Vielleicht war das auch falsch.
Habt ihr eine Idee, wie es klappen könnte?
Viele Grüße
Rainer
