JAR-Datei: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
 
(9 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Eine JAR-Datei ('''''J'''ava '''Ar'''chive''), ist ein Archiv, welches auf dem [[ZIP]]-Format basiert. JAR-Dateien sind identisch zu ZIP-Dateien nur um einen Ordner ''META-INF'' erweitert.
Eine JAR-Datei ('''''J'''ava '''Ar'''chive''), 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.).<br/>
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.).
Wenn die Manifestdatei mit einem Eintrag für eine Startklasse (Main-Class) versehen wurde, kann eine die JAR-Datei bei passender JRE per Mausklick gestartet werden.
 
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=
=META-INF=
Der META-INF Ordner enthält immer eine Datei MANIFEST.MF, in dieser werden Informationen über das Archiv bzw. das Programm beschrieben. Zusätzlich können auch Dateien für die [[Signatur]] des Archivs vorhanden sein.
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:
Manifest-Version: 1.0
Main-Class: HelloWorld
[LEERZEILE]


==MANIFEST.MF==
==MANIFEST.MF==
Zeile 163: Zeile 173:
|}
|}
Jede Manifest-Datei muss mit einer Leerzeile abgeschlossen werden.
Jede Manifest-Datei muss mit einer Leerzeile abgeschlossen werden.
Die Mindestausführung einer Manifest-Datei sieht bspw. so aus:
Manifest-Version: 1.0
Main-Class: HelloWorld
[LEERZEILE]


==Beispiel einer Manifest-Datei==
==Beispiel einer Manifest-Datei==
Zeile 184: Zeile 189:
=JAR-Datei erstellen=
=JAR-Datei erstellen=
Um eine JAR-Datei aus einem fertig kompilierten Projekt auf einer Kommandozeile zu erstellen, ist prinzipiell folgender Befehl anzuwenden:
Um eine JAR-Datei aus einem fertig kompilierten Projekt auf einer Kommandozeile zu erstellen, ist prinzipiell folgender Befehl anzuwenden:
  jar cvfm  Filename.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.


Demnach ist folgender Befehl zu Erzeugen einer Jar-Datei gültig:
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.
Die meisten verfügbares [[IDE]]s haben bereits Funktionen an Bord, die das komfortabel per Mausklick erledigen können.
Die meisten verfügbares [[IDE]]s 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 [[Was ist eine Exception|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 stellen}}


=Quellen=
=Quellen=
Zeile 197: Zeile 215:


=Links=
=Links=
*[https://www.java-blog-buch.de/070404-jar-klassen-zusammenfassen-und-ausfuhren/ Java-Blog-Buch: Jar - Klassen zusammenfassen und ausführen]
*[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.

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]

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


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!