# Programm als komplettes JAR!



## mille (14. Januar 2006)

Hallo!

Ich und noch 3 Leute stehen nur kurz vor Abschluss unseres Software-Praktikums. Programmiert haben wir ein 3D Billard eingebunden in eine SWING GUI.
Bisher ist alles prima.


Nun wollen wir es so handhaben, das wir alle Java-Dateien kompilieren und in ein JAR packen. Soweit so gut. Allerdings soll dieses JAR Alle benötigten Classen beinhalten. 
Sprich es muss neben unseren geschriebenen Klassen auch all jene Klasse hinzugefügt werden, die nicht Java Standard ist.
Demzufolge muss in das JAR also noch folgendes rein: die Java3D Klassen, der TextureLoader und der ModelLoader (für 3DS Modelle).

Sinn und Zweck soll sein, das dieses JAR auf jedem x-beliebigen Rechner mit Java ausgeführt werden kann, ohne das hierzu erst aufwendig jede Klasse in die entsprechenden Verzeichnisse gepackt werden muss.
Wie kann ich das handhaben? Kann mir das jemand erklären?

Verfügbares Tool: Netbeans Vers. 4

MfG


----------



## Vatar (14. Januar 2006)

Ich weiß jetzt nicht genau was du meinst, aber normale Jars kannst du ja einfach mit Eclipse erstellen (Stichwort exportieren). 
Falls du wirklich alles in dein Jar packen willst (zumindest versteh ich die Frage so), also Resourcen und andere Jar-Files empfehle ich dir FatJar welches ein Eclipse Plugin ist und ganz einfach solch ein Jar erstellt. Ich habs selber in meinem letzten Praktikum getestet (hat einwandfrei funktioniert).

Ich hoffe ich hab die Frage richtig verstanden


----------



## Thomas Darimont (14. Januar 2006)

Hallo!

 Du könntest dir auch mal onejar anschauen:
http://www-128.ibm.com/developerworks/java/library/j-onejar/
http://one-jar.sourceforge.net/

 Gruß Tom


----------



## Vatar (14. Januar 2006)

OneJar wird in FatJar auch als Option angeboten (wenn ich micht recht entsinne).
Aber stimmt, falls man mal kein Eclipse zur Hand haben sollte, ist das auch ne Möglichkeit.


----------



## mille (14. Januar 2006)

Ich probier es mal aus, danke!

Ihr scheint die Frage schon richtig verstanden zu haben.
Sinn und Zweck ist folgender:
Leute die keine Ahnung von Java haben (es aber gerade mal installiert haben  zumindestens die Runtime) sollen sich das Jar runterladen können und mittels hinzugefüger Bat datei ausführen koennen um so das billard spielen zu können .
Etwas clevere Linux user öffnen die jar einfach selbst (Da dort ja bat nicht  *g)


----------



## Xandro (14. Januar 2006)

Wenn Du die .jar-Endung für die JVM unter Windows registrierst,
benötigst Du auch dort keine Batch-Datei zum ausführen.

Dann muss die .jar-Datei aber ausführbar sein.


----------



## mille (14. Januar 2006)

ich hab mir das jetzt mal auf one-jar durchgelesen.
 "Quickstart".
 Wenn ich das richtig verstehe muss ich dort alle relevanten Dateien reinpacken (in ein extra verzeichnis innerhalb des Jars) und die Manifest.mf umschreiben?
 Aber woher weiss das programm dann, welche fertigen Packages noch benötigt werden?
 Etwaieg Java3D, textureloader etc packages will ich mir nicht extra aus jedem verzeichnis ziehen und extra hinzufügen (Das sollte bestenfalls schon automatisch geschehen).
 Kann Eclipse das automatisch? 
 Ungefähr so: "exportiere-> Jar -> name angeben -> kurz warten -> Ta da, Jar file fertig zum weggeben (mit allen notwendigen dateien, packages etc)".

\\edit: ich habe mir ein Verzeichnis erstellt und alle notwendigen java dateien, Texturen und 3dmodelle hinein kopiert.
Dann habe ich das one-jar-boot.jar mittels "jar -xvf one-jar-boot.jar" extrahiert und versucht folgende zeile aufzurufen: "jar -uvfm billard.jar boot-manifest.mf" 
Leider bekam ich eine Fehlermeldung, so ist es doch aber gefordert? oder sehe ich das falsch?


----------



## Xandro (14. Januar 2006)

Moin,

also Eclipse exportiert Dir nach Belieben alle nötigen Pakete und Klassen mit in Dein JarFile.
Es ist genau wie Du sagt, um ein Projekt als JarFile zu exportieren:
Export -> Name eingeben -> Pakete/Klassen wählen -> MainClass angeben -> fertig

Also sehr sehr einfach ohne grosse Umstände.

Zu Deinem selbsterstellten JarFile mit Manifest-Datei:
"jar -uvfm billard.jar boot-manifest.mf" kann nicht funktionieren, weil Deine Klassen fehlen.

"jar -uvfm billard.jar boot-manifest.mf *.*" würde alles aus Deinem Projektordner ins JarFile packen.


----------



## mille (14. Januar 2006)

Also ich habs sowohl mit One-JAR als auch mit Eclipse probiert!

mit ONE-Jar komm ich nich so ganz klar und eclipse fügt in das JAR nicht alle notwenidgen dateien hinzu.
ich habe foldendes gemacht:

Neues Projekt erstellt von Verzeichnis erstellt (Verzeichnis beinhaltet alle JAVA Dateien, alle texturen [in extra unterordner] und alle sonstigen notwendigen dateien)
dann export (mit allen ressourcen)
dann NAme der Mainklasse angegeben
Dann exportiert

Die datei war nur ~700 KB groß.
Allerdings muss sie um die 3,5MB sein (Wenn alle notwendigen ressourcen mit reingeladen werden).
Das macht das gute Eclipse aber nicht 

Kann mir einer vielleicht mal eine idioten sichere anleitung geben schreiben - ich verzweifle hier


----------

