Jar-Datei

lernen.2007

Erfahrenes Mitglied
Hallo Leute,

ich programmiere seit einiger Zeit aber wollte mal heute ein Jar-Datei draus erzeugen. Aber es ist nicht gelungen. Ich habe ein Programm geschrieben, dass es von einigen Jar-Files abhängt. Jetzt will ich aus dem Programm ein jar File erzeugen. Aus Class Files werden die jar files erzeugt. Die Jar Files die für das Programm benötigt bzw. zwingend erforderlich sind werden nicht in jar file gepackt. Wie kann ich es machen, dass es außer classes auch die benötigen jar files mitnimmt? Ich habe unter ECLIPSE 3.1 versucht.


Danke
erkan
 
Moin!
Am einfachsten ist es sicherlich, das FatJar Plugin für Eclipse zu nutzen. Das bindet dir alles was du willst in ein einzige jar Archiv.

*grüssle*
MeinerEiner
 
Hi!

Wenn's nicht in Eclipse sein muss, kannst Du alle jar's entpacken, die Klassen in einem Verzeichnis zusammenfügen und daraus (ans Manifest denken) wieder ein jar builden.
Um den Vorgang zu automatisieren noch n kleines Script schreiben.

Aber sicherlich ist der Vorschlag von "MeinerEiner_80" komfortabler. :)
 
Vielleicht dachte ich auch nur immer zu einfach:suspekt: :

Meine Progrämmchen beinhalten immer das JAR des Programms, ggf. 1...n meiner Tool-JARs und ggf. 1...n weiterer JARs.
Alles zusammen packe ich mit ZIP oder TAR, so daß der Benutzer alles nur noch in ein beliebiges Verzeichnis auspacken braucht - fertig.

Ich halte nichts davon, fremde JARs mit meinem eigenen Code zu "vermischen" und als gemeinsames JAR zu packen. Vielleicht will ja der Benutzer eine neuere Version eines Fremd-JARs verwenden...
 
Also für solche Prozesse eignet sich ant hervorragend und unter Eclipse ist Ant schon mit dabei.

Vorgehen:

Nehmen wir mal an, deine Mainmethode ist in der Klasse bar und liegt im Package de.foo
Als extere Jar benutzt du activation.jar und mail.jar.
Diese liegen später im Unterverzeichnis lib (von deiner Jar dann aus gesehen). Als Buildpath nutzt du das Unterverzeichnis bin. (Dort liegen dann deine .class-Dateien)

Zuerst erstellst du erstmal eine sogenanntes Manifest. Dazu legst du dir eine Datei namens manifest.mf an.

In dieser sollte folgendes stehen

Main-Class: de.foo.bar
AppVersion: 1.00
Class-Path: lib/activation.jar lib/mail.jar

Diese speicherst du direkt im Wurzelverzeichnis deines Projektes.

Als nächstes legst du eine Datei namens build.xml mit folgendem Inhalt an:

<!-- ======================================================================
18.01.2007 10:00:00

Mein Projektname
Buildfile fuer mein Projekt
====================================================================== -->
<project name="mein Projekt" default="all">
<description>mein Projekt
</description>


<!-- =================================
target: all
================================= -->
<target name="all"
description="--> Buildfile fuer mein Projekt">
<echo>mein Projekt wird erstellt</echo>
<delete file="bin/meinejar.jar"/>
<jar destfile="bin/meinejar.jar"
basedir="bin/"
includes="de/**"
manifest="manifest.mf"/>
</target>
</project>
Wenn du weitere includes ausser dem Verzeichnis de/** hast, dann trag das bei includes einfach ein, z.B. includes="de/** ressource/**". Wichtig - mit includes sind nicht die externen jars gemeint.
Das Buildfile führst du dann aus (Rechtsklick->Run As->Ant Build).
Danach sollte im Verzeichnis eine Datei meinejar.jar liegen.Um dein Programm dann auszuführen, benötigst du noch ein Verzeichnis bin/lib, in dem dann die activation.jar und die mail.jar liegen.

Ja - und das war es dann eigendlich auch schon. Sofern du alles richtig gemacht hast, solltest du dann ein ausführbares Jar-Archiv haben.


Gruss, Manuel
 

Neue Beiträge

Zurück