[JAVA] Einführung in den Befehl jar

Kapitel 5 Archivartefakte

Als Vorkenntnisse zum Verständnis der Optionen von JAR-Dateien Zunächst werde ich die Spezifikationen der JAR-Datei erläutern.

JAR-Dateistruktur

Die JAR-Datei kann die folgenden Elemente enthalten: Angenommen, Sie haben für jedes Element eine JAR-Datei mit dem Namen "sample-root.jar". スクリーンショット 2020-05-27 15.11.58.png

Eine Übersicht von jedem ist unten angegeben.

INDEX.LIST Eine Datei, die mit der Option -i des Befehls jar generiert wurde. In der JAR-Datei, die diese Datei enthält, und in den anderen JAR-Dateien, von denen sie abhängt Durch Indizieren der Standortinformationen des gespeicherten Pakets Es wird verwendet, um die Verarbeitung des Klassenladeprogramms zu beschleunigen.

INDEX.LIST Beispiel


JarIndex-Version: 1.0

sample-root.jar
com
com/example
com/example/app
Wenn abhängige JAR-Dateien vorhanden sind, folgen diese Informationen ebenfalls...

MANIFEST.MF

Die Manifestdatei ist eine Datei, die verschiedene Metainformationen der JAR-Datei enthält. Es besteht aus einem Hauptabschnitt und einzelnen Abschnitten und kann mit der Paarmethode "Attribut: Wert" festgelegt werden. Wenn dasselbe Attribut mehrmals festgelegt wird, hat das Attribut im einzelnen Abschnitt Vorrang.

#==========Hauptteil==========
#Versionsinformation(Verpflichtend)
Manifest-Version: 1.0
#Hauptattribut
#Attribut:Wert

#Stellen Sie sicher, dass zwischen dem Hauptabschnitt und den einzelnen Abschnitten eine Linie besteht
# ===========Einzelteil===========
#Attribut nach Eintrag
#Attribut:Wert

Nachfolgend sind die Hauptattribute aufgeführt, die in der Manifestdatei festgelegt werden können.

[Hauptattribut]

Außerdem,

--Attribute, die für eigenständige Anwendungen definiert sind (z. B. der Header der Hauptklasse)

Es gibt verschiedene Attribute wie.

[Attribute nach Eintrag]

--Inhaltstyp: Gibt den MIME-Typ und den Subtyp einer bestimmten Datei in der JAR-Datei an. Der Wert muss eine Zeichenfolge der Form "Typ / Untertyp" sein.

Signierte JAR-Datei

sample-root.DSA und sample-root.SF sind Signaturdateien. In diesem Artikel werden Java-Sicherheitstools nicht erwähnt, daher werde ich sie weglassen.

Dienstverzeichnis

Es gibt eine Funktion, die als Dienstanbieter bezeichnet wird, um die Funktion der externen JAR-Datei zu verwenden. Ein Verzeichnis, in dem konkrete Klassen gespeichert werden, die mit externen JAR-Dateien verbunden sind. Ich werde die Erklärung dieses Mal weglassen. Wenn Sie mehr wissen möchten, lesen Sie bitte den folgenden Artikel. Referenzartikel: Funktion des JAR-Dateidienstanbieters

jar Befehlsoptionen

Optionen zur Dateibearbeitung

--c: Neu erstellt --u: Update --x: Dateien und Verzeichnisse extrahieren --t: Liste der Archivinhalte --f: Geben Sie die JAR-Datei an

Manifest Optionen

--M: Erstellen Sie keine Manifestdatei

Andere Optionen

--v: Zeigt detaillierte Informationen an, z. B. die vom Befehl jar ausgeführte Operation und die Liste der gespeicherten Dateien. --0: JAR-Datei ohne ZIP-Komprimierung generieren --i : Erstellen Sie INDEX.LIST in der angegebenen JAR-Datei --- C : Verschieben Sie das Verzeichnis vorübergehend Aus dem aktuellen Verzeichnis, in dem der Befehl jar ausgeführt wurde, um während der Verarbeitung in das Verzeichnis zu wechseln Sie können das Ziel durch den relativen Pfad aus dem Verzeichnis angeben, das anstelle von an das Argument übergeben wird --- J

Eine Sammlung von Beispielen für den Befehl jar

Erstellen (Option c)

#Erstellen Sie eine JAR-Datei mit dem Namen jarfile mit den Ressourcen unter den Eingabedateien
jar c[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Erstellen Sie eine Jarfile mit den Ressourcen unter den Eingabedateien
#Mehrwert für das Manifest(Nicht löschen)
jar c[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]

[Informationen zur Beschreibungsreihenfolge der Optionen m und f] Die Reihenfolge der Beschreibung der Optionen m und f wird nicht festgelegt. Für cmf manifest jarfile, für cfm, jarfile manifest und so weiter. Die Reihenfolge der nachfolgenden Argumente muss übereinstimmen.

Update (Option u)

#Geben Sie in den Ressourcen unter den Eingabedateien nur den geänderten Teil in der Jarfile und dem Update an
jar u[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Nur die Teile, die sich in den Ressourcen unter den Eingabedateien geändert haben, werden in der Jarfile angezeigt.
#Aktualisieren Sie das Manifest(Werte hinzufügen oder entfernen)
jar u[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]

Extrahieren (Option x)

#Extrahieren Sie alle Verzeichnisse und Dateien in der JAR-Datei(Auftauen)Machen
#Wenn Eingabedateien angegeben sind, werden das angegebene Ziel und darunter extrahiert.
jar x[v]f jarfile [inputfiles] [-Joption]

Listenanzeige (Option t)

#Listen Sie alle Verzeichnisse und Dateien in der JAR-Datei auf
#Wenn Eingabedateien angegeben sind, wird die Liste unter dem angegebenen Ziel angezeigt.
jar t[v]f jarfile [inputfiles] [-Joption]

Indizierung (Option i)

#INDEX im angegebenen Jarfile.Erstelle eine Liste
jar i jarfile [-Joption]

Lauf

Unten ist die erste Ordnerstruktur. スクリーンショット 2020-05-27 18.00.56.png

Erstellen einer JAR-Datei

Geben Sie die JAR-Datei (f) an, geben Sie detaillierte Informationen aus (v). Erstellen Sie eine neue JAR-Datei mit dem Namen java-sample.jar (c).

#Das aktuelle Verzeichnis ist/java-Stichprobe
$ jar cvf java-sample.jar .
Manifest hinzugefügt
.DS_Speicher wird hinzugefügt(Eingeben=6148)(aus=411)(93%Schrumpfte)
lib/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
lib/commons-lang3-3.10.Glas hinzufügen(Eingeben=523372)(aus=481881)(7%Schrumpfte)
src/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
src/com/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
src/com/example/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
src/com/example/app/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
src/com/example/app/UseCommons.Java hinzufügen(Eingeben=647)(aus=286)(55%Schrumpfte)
src/com/example/app/StrFactory.Klasse wird hinzugefügt(Eingeben=308)(aus=234)(24%Schrumpfte)
src/com/example/app/UseCommons$CommonsHelper.Klasse wird hinzugefügt(Eingeben=592)(aus=398)(32%Schrumpfte)
src/com/example/app/StrFactory.Java hinzufügen(Eingeben=115)(aus=101)(12%Schrumpfte)
src/com/example/app/UseCommons.Klasse wird hinzugefügt(Eingeben=732)(aus=441)(39%Schrumpfte)

Eine java-sample.jar wird im aktuellen Verzeichnis erstellt. スクリーンショット 2020-05-27 18.07.51.png

JAR-Dateien auflisten

#Das aktuelle Verzeichnis ist/java-Stichprobe
$ jar tf java-sample.jar
META-INF/
META-INF/MANIFEST.MF
.DS_Store
lib/
lib/commons-lang3-3.10.jar
src/
src/com/
src/com/example/
src/com/example/app/
src/com/example/app/UseCommons.java
src/com/example/app/StrFactory.class
src/com/example/app/UseCommons$CommonsHelper.class
src/com/example/app/StrFactory.java
src/com/example/app/UseCommons.class

JAR-Datei entpacken

Wenn Sie es direkt unter Java-Sample ausführen, werden vorhandene Dateien und dekomprimierte Dateien gemischt Erstellen Sie einen Ordner namens unzip und entpacken Sie ihn dort.

#Das aktuelle Verzeichnis ist/entpacken
$ jar xf ../java-sample/java-sample.jar

Das Dekomprimierungsergebnis der JAR-Datei wird direkt unter Entpacken erweitert. スクリーンショット 2020-05-27 18.12.10.png

Zurück zur Hauptseite

Recommended Posts

Einführung in den Befehl jar
Einführung in JAR-Dateien
Einführung in den Befehl javadoc
Einführung in den Java-Befehl
Einführung in den Befehl javac
Einführung in web3j
Einführung in Micronaut 1 ~ Einführung ~
[Java] Einführung in Java
Einführung in die Migration
Einführung in Java
Einführung in Doma
Datei zur JAR-Datei hinzufügen
Einführung in Ratpack (8) -Session
Befehl Java Jar Class Path Path
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Einführung in Entwurfsmuster (Einführung)
Einführung in die praktische Programmierung
Einführung in Ratpack (2) -Architektur
Einführung in den Lambda-Stil
Einführung in die Keycloak-Entwicklung
Einführung in Entwurfsmuster (Builder)
Einführung in die Android App-Entwicklung
Einführung in Ratpack (5) --Json & Registry
Einführung in Metabase ~ Umgebungskonstruktion ~
Einführung in Ratpack (7) - Guice & Spring
(Punktinstallation) Einführung in Java8_Impression
Einführung in Entwurfsmuster (Composite)
Einführung in Micronaut 2 ~ Unit Test ~
Einführung in JUnit (Studiennotiz)
Einführung in Spring Boot ~ ~ DI ~
Einführung in Designmuster (Fliegengewicht)
Einführung in Spring Boot ② ~ AOP ~
Einführung in Apache Beam (2) ~ ParDo ~
Einführung in die EHRbase 2-REST-API
Rbenv-Befehl zur Verwendung von Ruby
Einführung in Entwurfsmuster Prototyp
[Java] Einführung in die Stream-API
Einführung in Entwurfsmuster (Iterator)
Einführung in Spring Boot Teil 1
Einführung in Ratpack (1) - Was ist Ratpack?
Einführung in Entwurfsmuster (Strategie)
[Einführung in Janken (ähnliche) Spiele] Java
Einführung in Linux Container / Docker (Teil 1)
Einführung in die schnelle Übungsausgabe Kapitel 5
[Einführung in Java] Über Lambda-Ausdrücke
[Einführung in Java] Informationen zur Stream-API
Einführung in die funktionale Programmierung (Java, Javascript)
Einführung in Algorithmen mit der Java-Shakutori-Methode
Einführung in Entwurfsmuster (Factory-Methode)