In diesem Artikel wird die Verwendung des JAR-Befehls ausführlich beschrieben. Dies ist hilfreich für alle, die die Verwendung des JAR-Befehls erlernen und zusammenfassen möchten. Die Einzelheiten lauten wie folgt:
Das JAR-Paket ist ein einzigartiges komprimiertes Dokument in Java. Tatsächlich kann es jeder als .zip-Paket verstehen. Natürlich gibt es Unterschiede. Es gibt eine META-INF/MANIFEST.MF-Datei im JAR-Paket. Wenn Sie das JAR-Paket finden, wird es automatisch generiert.
Das JAR-Paket wird durch den Befehl „/bin/jar.exe“ des JDK-Installationsverzeichnisses generiert. Wenn wir das JDK installieren und den Pfad festlegen, können wir den Befehl „jar.exe“ normal verwenden Werkzeugpaket. Machen Sie sich über diese Details keine Sorgen.
Mal sehen, wie es verwendet wird:
1. Parameter des JAR-Befehls:
jar-Befehlsformat: jar {ctxuf}[ vme 0 M i ][-C Verzeichnis] Dateiname...
Darunter muss einer der vier Parameter {ctxu} ausgewählt werden. [vfme 0 M i ] ist ein optionaler Parameter und der Dateiname ist ebenfalls erforderlich.
-c erstellt ein JAR-Paket
-t zeigt eine Liste des Inhalts im Glas an
-x JAR-Paket dekomprimieren
-u fügt Dateien zum JAR-Paket hinzu
-f gibt den Dateinamen des JAR-Pakets an
-v generiert detaillierte Berichte und gibt diese auf Standardgeräten aus
-m gibt die Datei manifest.mf an (Sie können einige Einstellungen für das JAR-Paket und seinen Inhalt in der Datei manifest.mf vornehmen.)
-0 komprimiert den Inhalt des JAR-Pakets beim Generieren nicht
-M Erstellt nicht für alle Dateien eine Manifestdatei (Manifest.mf). Dieser Parameter ist mit der Einstellung identisch, die den Parameter -m ignoriert.
-i erstellt eine Indexdatei für die angegebene JAR-Datei
-C bedeutet, in das entsprechende Verzeichnis zu gehen, um den JAR-Befehl auszuführen, was einer CD in dieses Verzeichnis entspricht, und dann den JAR-Befehl ohne -C auszuführen
2. Beispiele für die Verwendung von Gläsern:
(1)JAR-Paket erstellen
jar cf hello.jar hallo
Verwenden Sie das Testverzeichnis, um das Paket hello.jar zu generieren. Wenn hello.jar vorhanden ist, wird es überschrieben.
(2) Erstellen Sie den Verpackungsprozess und zeigen Sie ihn an
jar cvf hallo.jar hallo
Verwenden Sie das Verzeichnis hello, um das Paket hello.jar zu erstellen und zeigen Sie ein Beispiel für den Erstellungsprozess:
E:/>jar cvf hello.jar hallo
Manifest
Hinzufügen: hallo/(einlesen = 0) (ausschreiben = 0) (0 % gespeichert)
Hinzugefügt: hello/TestServlet2.class (Lesen = 1497) (Schreiben = 818) (um 45 % komprimiert)
Hinzugefügt: hello/HelloServlet.class (Lesen = 1344) (Schreiben = 736) (um 45 % komprimiert)
Hinzugefügt: hello/TestServlet1.class (Lesen = 2037) (Schreiben = 1118) (um 45 % komprimiert)
(3) Präsentationsglas-Paket:
jar tvf hello.jar Zeigt den Inhalt des Pakets hello.jar an. Das angegebene JAR-Paket muss tatsächlich vorhanden sein, andernfalls tritt eine FileNoutFoundException auf.
(4) Entpacken Sie das JAR-Paket:
jar xvf hallo.jar
Entpacken Sie hello.jar in das aktuelle Verzeichnis
(5) Dateien zum JAR hinzufügen:
jar uf hello.jar HelloWorld.java
Fügen Sie HelloWorld.java zum hello.jar-Paket hinzu
(6) Erstellen Sie ein JAR-Paket mit unkomprimiertem Inhalt:
jar cvf0 hallo.jar *.class
Generieren Sie ein unkomprimiertes JAR-Paket mit allen .class-Dateien im aktuellen Verzeichnis
(7) Erstellen Sie ein JAR-Paket mit der Datei manifest.mf:
jar cvfm hallo.jar manifest.mf hallo
Das erstellte JAR-Paket verfügt über ein zusätzliches META-INF-Verzeichnis und das META-INF-Verzeichnis über eine zusätzliche Datei manifest.mf. Die Rolle von manifest.mf wird später erwähnt.
(8) Ignorieren Sie die Datei manifest.mf:
jar cvfM hallo.jar hallo
Das generierte JAR-Paket enthält nicht das Verzeichnis META-INF und die Datei manifest.mf.
(9) -C-Anwendung hinzufügen:
jar cvfm hello.jar mymanifest.mf -C hallo/
Es bedeutet, in das Hallo-Verzeichnis zu wechseln und dann den JAR-Befehl auszuführen.
(10)-i generiert eine Indexliste für die JAR-Datei:
Wenn der Inhalt eines JAR-Pakets sehr gut ist, können Sie eine Indexdatei dafür generieren, was sehr problemlos zu sein scheint.
jar i hallo.jar
Nach der Ausführung dieses Befehls wird eine Indexdatei mit dem Namen INDEX.LIST im Ordner META-INF des Pakets hello.jar generiert. Es wird eine Liste mit dem Namen des JAR-Pakets oben generiert.
(11) Exportieren Sie die Dekomprimierungsliste:
jar tvf hello.jar >hello.txt Wenn Sie den detaillierten Prozess der Dekomprimierung eines JAR anzeigen möchten und das JAR-Paket groß ist, werden die Bildschirminformationen angezeigt. Zu diesem Zeitpunkt können Sie die Liste in eine Datei ausgeben langsam schätzen!
(12)jar -cvf hello.jar hello/*
Die ursprüngliche Verzeichnisstruktur sieht beispielsweise wie folgt aus:
Hallo
|---com
|---org
Ursprünglich wollten Sie nur das com-Verzeichnis und das org-Verzeichnis packen, aber zu diesem Zeitpunkt wird der Befehl jar zusammen mit hello gepackt. Darauf sollte jeder achten. Die vom Befehl jar generierte komprimierte Datei enthält das Verzeichnis danach. Wir sollten das Hallo-Verzeichnis betreten und den JAR-Befehl ausführen.
Hinweis: Der Benutzer kann den Dateinamen manifest.mf beliebig angeben, der Befehl jar erkennt jedoch nur Manifest.mf. Er konvertiert den vom Benutzer angegebenen Dateinamen entsprechend, sodass sich der Benutzer keine Sorgen machen muss.
3. Regeln für das Schreiben von Manifest.mf-Dateien:
Beim Schreiben von manifest.mf muss man auf einige Details achten. Ich bin hier auf viele Fehler gestoßen, deshalb liste ich sie hier auf.
(1) Wenn es keine Leerzeilen oder Leerzeichen geben darf, darf die erste Zeile keine Leerzeile sein (vor der ersten Zeile darf keine Leerzeile stehen), zwischen den Zeilen darf keine Leerzeile stehen und am Ende darf keine Leerzeile stehen Am Ende der Zeile stehen Leerzeichen
(2) Es muss eine Leerzeile vorhanden sein und die letzte Zeile muss eine Leerzeile sein (fügen Sie einfach einen Wagenrücklauf hinzu, nachdem Sie Ihren Inhalt eingegeben haben).
(3) Es muss ein Leerzeichen vorhanden sein
Schlüssel: Der Wert muss mit einem Leerzeichen nach dem Semikolon geschrieben werden
4. So verwenden Sie Klassen in JAR-Paketen
Schreiben wir ein kleines Beispiel, so intuitiv!
public final class Person{ public static int age() { return 30 }}->javac Person.java->jar cvf person.jar Person.class
Machen Sie aus der obigen Datei ein JAR-Paket
Schreiben Sie eine andere Klasse, um sie aufzurufen:
öffentliche Klasse MyAge{ public static void getAge() { System.out.println(Person.age() }}->javac MyAge.java ->java -classpath person.jar MyAge
Interessierte Leser können dieses Programm debuggen
5. Erstellen Sie ein ausführbares JAR-Paket
Wenn Sie ein Programm selbst schreiben, wissen Sie im Laufe der Zeit nicht einmal, welche die Hauptklasse ist. Außerdem werden möglicherweise viele Bilder oder andere Dateien verwendet, was es verwirrend macht zum Lesen. Zu diesem Zeitpunkt können Sie darüber nachdenken, es in ein ausführbares JAR-Paket umzuwandeln ...
(1) Bearbeiten Sie die Datei manifest.mf und fügen Sie die folgende Zeile hinzu
Hauptklasse: MyApplet
Hinweis: Die Größe der Hauptklasse wird bestimmt, das Leerzeichen nach dem Doppelpunkt und die Eingabetaste nach MyApplet müssen eingegeben und dann gespeichert werden.
(2) Verpackung
jar cvfm FirstApplet.jar manifest.mf MyApplet.class
Hinweis: manifest.mf wird als Klassenpfad (z. B. hello.Hello) oder Dateiname (Applet) angegeben, in dem die Datei Mani-Class: MyApplet gespeichert ist.
(3) Verwendung einer ausführbaren JAR-Datei
java -jar FirstApplet.jar
Es kann auch in <applet></applet> verwendet werden:
<applet code=MyApplet archive=FirstApplet.jar width=200 height=100></applet>
Hinweis: Die Klasse ist nicht angegeben. Sie können den Klassennamen und den Paketnamen nach Belieben festlegen.
6. Erweitern Sie Ihre eigenen Kurse
Im JDK-Installationsverzeichnis/jre/lib/ext-Verzeichnis bietet SUN die Möglichkeit, unsere eigenen Klassen zu erweitern. Sie können Ihre eigenen Klassendateien in .jar-Pakete eingeben und in diesem Verzeichnis ablegen. Der Klassenlader ist für das Laden verantwortlich, und der Klassenlader ExtClassLoader ist AppClassL Der übergeordnete Loader des Loader-Klassenladers, AppClassLoader, ist hauptsächlich für das Laden von Dateien unter dem CLASSPATH-Pfad verantwortlich. Der in Java verwendete Mechanismus besteht darin, den übergeordneten Loader zu delegieren, sodass die in diesem Verzeichnis gespeicherten Klassendateien im JAR keine haben Einstellungen, der Klassenlader kann das normale Laden finden, ist das nicht sehr praktisch, ha...
Wenn Ihre .jar-Datei für Applet-Anwendungen gedacht ist, können Sie die folgenden zwei Zeilen zu ihrer manifest.mf hinzufügen, bevor Sie sie in ein JAR-Paket packen.
Klassenpfad: FirstApplet.jarKlassenpfad: SecondApplet.jarHauptklasse: MyApplet
Hinweis: Der Klassenpfad kann auf mehrere Elemente festgelegt werden. Geben Sie einfach den Namen des JAR-Pakets direkt ein. Main-Class wird hauptsächlich verwendet, wenn das JAR mehrere .class-Klassendateien enthält. Java weiß nicht, welche die Hauptklasse ist, daher muss sie angegeben werden. Wenn das JAR-Paket nur eine Klasse enthält, ist dies natürlich der Fall muss nicht angegeben werden.
Die Reihenfolge, in der Java Klassen aufruft: Klassen in java/lib/ext ---> In Manifest.mf angegebene Klassen --> Klassen im aktuellen Verzeichnis --> In set CLASSPATH angegebene Klassen.
7. Rufen Sie das JAR-Paket im URL-Netzwerk auf
(1) Generieren Sie die URL des JAR-Pakets
URL u=neue URL("jar:"+"FirstAppplet.jar"+!/");
(2) Erstellen Sie ein jarURLConnection-Objekt
JarURLConnection juc=(JarURLConnection)u.openConnection();
(3) Geben Sie den Namen der Hauptklasse im JAR-Paket zurück
Attribute attr=juc.getMainAttributes();String name=attr.getValue("Mani-Class");
Stellen Sie sicher, dass das Mani-Class-Attribut in manifest.mf in Ihrem JAR-Paket korrekt festgelegt ist. Auch hier müssen Sie die Regeln beachten.
(4) Erstellen Sie ein Klassenobjekt basierend auf dem erhaltenen Hauptklassennamen
Klasse c=Class.forName(name);
(5) Rufen Sie die Hauptmethode entsprechend dem Klassenobjekt auf:
Methode cm=c.getMethod("main",new Class[]{String.class}); cm.invoke(null,new Object[]{});
Tipp: Das Obige nutzt Kenntnisse über den Reflection-Reflexionsmechanismus. Wenn Sie an mehreren Reflexionsmechanismen interessiert sind, können Sie sich den relevanten Inhalt im Paket java.lang.reflect ansehen.
8. Tipps zur Verwendung von JAR-Befehlen:
(1) jar erstellt eine komprimierte ZIP-Datei
jar cvfM TestZIP.jar testen
Fügen Sie einfach den M-Parameter hinzu, um keinen META-INF-bezogenen Inhalt zu generieren, und ändern Sie dann TestZIP.jar in TestZIP.zip. Ist das nicht ganz einfach?
(2) Verwenden Sie WinRAR, um die .jar-Datei zu dekomprimieren
Wie oben erwähnt, handelt es sich bei der JAR-Datei um eine spezielle komprimierte Datei, daher kann sie natürlich mit einigen unserer häufig verwendeten Dekomprimierungstools dekomprimiert werden. Wie man sie dekomprimiert, muss ich Ihnen nicht sagen.
(3) Verwenden Sie WinRAR, um .jar-Dateien zu generieren
Wir haben bereits gesagt, dass der Hauptunterschied zwischen JAR-Paketen und ZIP-Paketen darin besteht, dass es im JAR-Paket ein zusätzliches META-INF-Verzeichnis gibt. Unter dem META-INF-Verzeichnis müssen wir nur die entsprechende Datei erstellen Verzeichnis und komprimieren Sie es.
Die Verzeichnisstruktur ist wie folgt:
TestJar
|--META-INF
|--manifest.mf
|--Verwandte Klassendateien