Ausführbares Jar File

Status
Nicht offen für weitere Antworten.

mindbreaker

Mitglied
Guten Abend,


Wie erstellt man ein ausführbares Jar File das SWT nutzen kann. Man soll einfach auf das Jar-File klicken und ein eine Oberfläche erscheint.

Aktueller Stand:
============

http://java.sun.com/docs/books/tutorial/jar/manifest/downman.html

Make-File-Datei:
Code:
Manifest-Version: 1.0
Main-Class: Bonusaufgabe3.soft1
Class-Path: /usr/src/java/eclipse/plugins/org.eclipse.swt.gtk_3.0.2/ws/gtk/swt.jar /usr/src/java/eclipse/plugins/org.eclipse.swt.gtk_3.0.2/ws/gtk/swt-mozilla.jar /usr/src/java/eclipse/plugins/org.eclipse.swt.gtk_3.0.2/ws/gtk/swt.swt-pi.jar


Probleme:
=======

java -Djava.library.path=${system:ECLIPSE_HOME}/plugins/org.eclipse.swt.gtk_3.0.0/os/linux/x86 -jar Bonusaufgabe1.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/internal/gtk/OS
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:118)
at Bonusaufgabe3.soft1.main(soft1.java:172)

Kann es aber niergends finden ![/code]
 
die dlls und jars findest du im eclipse pluginverzeichnis

(hast du doch eh einstellen müssen, damit dein prog innerhalb von eclipse überhaupt gestartet werden kann?)

Wie erstellt man ein ausführbares Jar File das SWT nutzen kann. Man soll einfach auf das Jar-File klicken und ein eine Oberfläche erscheint.
geht so nicht, weil java keine native bibliotheken aus jar archiven laden kann, also läuft dein prog nicht auf jedem rechner auf anhieb

such mal hier im forum, war schon alles da
 
Tjo, soviel wieder zur intelligenten Nutzung von SWT, aber das ist ein anderes Kapitel....


Du könntest dir einen Loader schreiben, der dir die dll Datei immer aus deiner JarDatei rauskopiert und einen Runtime.getRuntime().addShutdownHowk(thread) Thread dazuhängen der dir die dll wieder löscht (oder auch nicht).

Das wäre die beste Variante...

Also alles ins jar File packen und im main eine statische Methode aufrufen, die die dll rauskopiert (JarFile..)
 
... Du könntest für die dll's ein File-Objekt anlegen und File#deleteOnExit. Dann isses wieder weg, wenn die VM beendet wird.
 
thE_29 hat gesagt.:
Tjo, soviel wieder zur intelligenten Nutzung von SWT, aber das ist ein anderes Kapitel....
???:L

thE_29 hat gesagt.:
Du könntest dir einen Loader schreiben, der dir die dll Datei immer aus deiner JarDatei rauskopiert und einen Runtime.getRuntime().addShutdownHowk(thread) Thread dazuhängen der dir die dll wieder löscht (oder auch nicht).

Das wäre die beste Variante...

Also alles ins jar File packen und im main eine statische Methode aufrufen, die die dll rauskopiert (JarFile..)

Wieso das? Einfach die native-bibliotheken parallel zum jar-archiv legen und gut ist's.

@mindbreaker:
Wieso setzt du den Classpath auf Archive aus dem Eclipse Ordner? Leg dir nen Ordner 'lib' parallel zu deinem jar archiv an leg dort alle benötigten jars rein und setzen den classpath relativ:
Class-Path: lib/swt.jar lib/blub.jar
 
Man nutzt eine Lib die noch dll/os, etc braucht nur weil Swing bisi langsamer is...

Sehr schlau (das ist halt meine private Meinung über SWT), aber das ist eben ein anderes Kapitel 🙂
 
Hm und ich finde, es als Nachteil zu sehen dass dlls genutzt werden, sehr schlau. 🙂
Aber ok ist n anderes Kapitel, mich stört nur dass bei jedem dritten SWT-Thread, SWT angemacht wird.
 
Eigentlich seltsam, dass das mit den DLLs in JAR-Files nicht klappen soll. Zumindest klappt es, wenn man mit WebStart arbeitet...

Wir haben hier ne Komponente, die den Internet Explorer über JNI einbindet (JExplorer, analog zum Pendant aus JDIC) und da lasse ich die DLL auch mit in das JAR-File packen..

Ich würde also mal ein Auge auf WebStart werfen, auch wenn man bei einem Prog, das irgendwie auf CD o.ä. ausgeliefert wird, natürlich den Vorteil des automatischen Updates verschenkt. Aber wenigstens muss man sich keinen Kopf um DLLs machen und muss auch keine Batch-Dateien schreiben um das Proggie zu starten oder sich mit Usern rumärgern, bei denen JAR-Dateien erstmal mit WinZIP o.ä. assoziiert sind...
 
@stevi: dlls haben das Problem das sie Systemabhängig sind 😉

Desweiteren, wenn die dlls/os auch funktionieren würden, wenn sie IM jar File sind, dann wäre es super und auch kein Kritikpunkt mehr..
 
Also wenn sie mit in einer jar gepackt sind ist es ok, aber wenn ich sie in einem Ordner halte ist es nicht ok und systemabhängig? :autsch:
 
Jo, weil ich dann gleich alle libs in das Jar File packe!

Es geht alleine schon drum, das man nur 1 File downloaden muss, bzw kopieren ^^
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben