JAR-Datei: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
| Zeile 8: | Zeile 8: | ||
=META-INF= | =META-INF= | ||
Der META-INF Ordner enthält immer eine Datei MANIFEST.MF, in dieser werden Informationen über das Archiv bzw. das Programm beschrieben. | Der META-INF Ordner enthält immer eine Datei MANIFEST.MF, in dieser werden Informationen über das Archiv bzw. das Programm beschrieben. | ||
Wenn eine JAR-Datei [[Java-Applets und Java WebStart-Anwendungen signieren|signiert]] wird, wird automatisch eine Signaturdatei generiert und im META-INF- Verzeichnis der JAR-Datei abgelegt , das auch das Manifest des Archivs enthält. Signaturdateien haben Dateinamen mit der Erweiterung .SF . Außerdem eine Signaturblock-Datei mit der Dateiendung .DSA. | |||
Die Mindestausführung einer Manifest-Datei sieht bspw. so aus: | Die Mindestausführung einer Manifest-Datei sieht bspw. so aus: | ||
Version vom 5. Juli 2020, 16:03 Uhr
Eine JAR-Datei (Java Archive), ist ein Archiv, welches auf dem ZIP-Format basiert. JAR-Dateien sind also identisch mit ZIP-Dateien, sind aber um einen Ordner META-INF erweitert, der dem Interpreter weitere Informationen zur JAR-Datei liefert.
JAR-Dateien werden verwendet, um die einzelnen Dateien eines Projekts zusammen zufassen. So sind in einem Archiv häufig neben Class-Dateien auch multimediale Inhalte zu finden (Bilder, Sound etc.).
Daher unterscheiden wir JAR-Dateien in Java-Anwendungen und Java-Biliotheken, die wiederum Java-Anwendungen um Funktionen erweitern.
Enthält eine JAR-Datei ein Verzeichnis META-INF mit einer Manifest-Datei mit einem Eintrag für eine Startklasse (Main-Class), kann eine die JAR-Datei bei passender JRE per Mausklick gestartet werden.
META-INF
Der META-INF Ordner enthält immer eine Datei MANIFEST.MF, in dieser werden Informationen über das Archiv bzw. das Programm beschrieben.
Wenn eine JAR-Datei signiert wird, wird automatisch eine Signaturdatei generiert und im META-INF- Verzeichnis der JAR-Datei abgelegt , das auch das Manifest des Archivs enthält. Signaturdateien haben Dateinamen mit der Erweiterung .SF . Außerdem eine Signaturblock-Datei mit der Dateiendung .DSA.
Die Mindestausführung einer Manifest-Datei sieht bspw. so aus:
Manifest-Version: 1.0 Main-Class: HelloWorld [LEERZEILE]
MANIFEST.MF
In der Manifest-Datei werden verschiedene Eigenschaften beschrieben. Die Eigenschaften werden durch einen Tupel von Schlüsselwort und Wert angegeben. Für verschiedene Bereiche der Verwendung, sind auch verschiedene Eigenschaften vorgesehen:
| Bereich | Attribut | Beschreibung | Optional |
|---|---|---|---|
| Allgemein | Manifest-Version | Versionsnummer für die Manifest-Datei | Nein |
| Created-By | Optionale Angabe des Erstellers | Ja | |
| Name | Angabe des Namens einer Datei, z.B. für eine Signatur oder Bean | Ja | |
| SHA1-Digest | SHA1 Signatur für die darüber angegebene Datei | Ja | |
| Signature-Version | Definiert die Version der Signatur | Ja | |
| Class-Path | Angabe von Klassen und JAR-Dateien, die zum Classpath hinzugefügt werden sollen, sie sollten immer mit ./ beginend angegeben werden | Ja | |
| Permissions | Seit Java 7 Update 51 ist die Permissions-Angabe anzugeben. Gültig sind sandbox (keine Rechteerweiterung benötigt) und all-permissions (z.B. für Schreib-/Leserechte). (Mehr dazu unter Permissions)
|
Nein (nur für Applets und WebStart) | |
| Application-Name | Hier muss der Name der Anwendung angegeben werden. (Mehr dazu unter Application-Name) | Nein (nur für Applets und WebStart) | |
| Codebase | Hier muss die Quell-Domain, also der Herkunftsort angegeben werden. (Mehr dazu unter Codebase) | Nein (nur für Applets und WebStart) | |
| Anwendungen | Main-Class | Angabe der Mainclass, sie ist nötig wenn die JAR-Datei ausführbar sein soll | Ja (wenn es kein ausführbares Programm ist) |
| SplashScreen-Image | Angabe eines Bildes, das als Splash-Screen angezeigt wird. Das Bild muss in der JAR vorhanden sein. | Ja | |
| Applets | Extension-List | ||
| *-Extension-Name | |||
| *-Specification-Version | |||
| *-Implementation-Version | |||
| *-Implementation-Vendor-Id | |||
| *-Implementation-URL | |||
| Extensions | Extension-Name | ||
| Implementation-Title | |||
| Implementation-Vendor | |||
| Implementation-Vendor-Id | |||
| Implementation-URL | |||
| Specification-Title | |||
| Specification-Version | |||
| Specification-Vendor | |||
| Sealed | |||
| J2EE | Java-Bean | Definiert eine Java Bean Klasse | |
| x-Digest-y | |||
| Magic |
Jede Manifest-Datei muss mit einer Leerzeile abgeschlossen werden.
Beispiel einer Manifest-Datei
Manifest-Version: 1.0 Created-By: Eagle Projekt Manager 1.1.0.0 Permissions: all-permissions Codebase: *.eagleside.de Application-Name: DatabaseDesigner Main-Class: de.eagleside.databasedesigner.DatabaseDesignerMain CLASS-PATH: ./lib/jdom.jar ./lib/EagleSwingLibrary.jar ./lib/EagleUtilLibrary.jar [Leerzeile!]
Es ist üblich, Abhängigkeiten in einem Unterverzeichnis relativ zur Programm-Jar-Datei abzulegen. Laufwerksangaben sind systemabhängig, daher sollte darauf verzichtet werden.
JAR-Datei erstellen
Um eine JAR-Datei aus einem fertig kompilierten Projekt auf einer Kommandozeile zu erstellen, ist prinzipiell folgender Befehl anzuwenden:
jar cvfm MeinJar.jar manifest.txt input-file(s)
Das input-file(s) ist eine Liste von einer oder mehreren Dateien, die die Jar-Datei enthalten soll. Mehrere Dateien werden mit einem Leerzeichen voneinander abgegrenzt. Mehrere Dateien gleichen Typs können mit einem Wildcard-Symbol (*) angegeben werden. Wenn ein zu speicherndes Element ein Verzeichnis ist, werden die Inhalte dieses Verzeichnisses rekursiv der Jar-Datei hinzugefügt.
Demnach ist folgender Befehl zu Erzeugen einer Jar-Datei gültig:
jar cvfm MeinJar.jar manifest.txt icons audio *.class Lizenz.txt
Der Jar-Datei wird ein Manifest hinzugefügt. Außerdem wird es Verzeichnisse mit Icons und Audiodateien (icons, audio) enthalten, in denen die Programm-Icons und einige Sound-Dateien abgelegt wurden. Schließlich noch alle Class-Dateien und eine Lizenz-Datei. Die meisten verfügbares IDEs haben bereits Funktionen an Bord, die das komfortabel per Mausklick erledigen können.
JAR-Datei ausführen
Um die Programmausführung einer Java-Anwendung, die in einer einer JAR-Datei gespeichert ist, per Doppelklick zu starten ist es notwendig, dass die Dateiendung (.jar) mit dem Java-Interpreter verknüpft ist. Normalerweise ist das bei Windows-System der Fall. Bei Linux-Systemen muss da oft nachgeholfen werden.
Tipp: Wie Sie vorgehen, wenn eine Jar-Datei nicht startet, erfahren Sie im Artikel Jar-Datei mit Doppelklick nicht ausführbar.
Neben dem Start per Mausklick, ist aber insbesondere der Start in der Befehlszeile wichtig, um Exceptions, die während der Ausführung in die Java-Console geworfen werden, lesen zu können. Folgender Befehl startet die Ausführung einer Anwendung, die in einer JAR-Datei gespeichert ist:
java -jar MeinJar.jar
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche unseren Chat
Wir helfen dir gerne!
