JAR-Datei: Unterschied zwischen den Versionen
| (Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
| Zeile 191: | Zeile 191: | ||
jar cvfm MeinJar.jar manifest.txt input-file(s) | 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. | 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. | ||
Einen Sonderfall stellt der Punkt am Ende einer solchen Anweisung dar. Der Punkt sagt aus, dass der Inhalt des Verzeichnisses, von dem aus aus der Jar-Befehl gestartet wurde ins Jar-Archiv eingefügt werden soll. | |||
jar cvfm MeinJar.jar manifest.txt . | |||
Der Befehl erzeigt eine Jar-Datei, die eine Manifest-Datei enthält, sowie alle Verzeichnisse und Dateien des Verzeichnisses, von dem heraus der Jar-Befehl gestartet wurde. | |||
Auch folgender Befehl zum Erzeugen einer Jar-Datei ist gültig: | |||
jar cvfm MeinJar.jar manifest.txt icons audio *.class Lizenz.txt | 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. | 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. | ||
| Zeile 212: | Zeile 215: | ||
=Links= | =Links= | ||
*[https:// | *[https://java-blog-buch.bytes4fun.de/070404-jar-klassen-zusammenfassen-und-ausfuehren/ Java-Blog-Buch: Jar - Klassen zusammenfassen und ausführen] | ||
[[Kategorie:Java]] | [[Kategorie:Java]] | ||
[[Kategorie:Java Grundlagen]] | [[Kategorie:Java Grundlagen]] | ||
Aktuelle Version vom 1. Juli 2026, 14:37 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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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. Einen Sonderfall stellt der Punkt am Ende einer solchen Anweisung dar. Der Punkt sagt aus, dass der Inhalt des Verzeichnisses, von dem aus aus der Jar-Befehl gestartet wurde ins Jar-Archiv eingefügt werden soll.
jar cvfm MeinJar.jar manifest.txt .
Der Befehl erzeigt eine Jar-Datei, die eine Manifest-Datei enthält, sowie alle Verzeichnisse und Dateien des Verzeichnisses, von dem heraus der Jar-Befehl gestartet wurde.
Auch folgender Befehl zum Erzeugen einer Jar-Datei ist 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
[Bearbeiten | Quelltext bearbeiten]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
[Quelltext bearbeiten]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!
