[JAVA] Erstellen Sie mit dem Befehl eine JAR-Datei

Kompilieren Sie mit allen Befehlen von der Java-Datei zur Klasse. Und erstellen Sie eine Jar-Datei

Was ist eine Jar-Datei?

Jar wird unten im Wiki erklärt. Jar oder Java Archive ist ein Tool, das mehrere kompilierte Java-Bytecodes und -Ressourcen wie die von ihnen verwendeten Bilder zu einem kombiniert, im Zip-Format komprimiert und ausgibt. Das Ding.

Vorbereitung

** Verzeichnisvorbereitung ** Die Verzeichnisstruktur von Jar ist wie folgt und erstellen Sie nach Bedarf ein Verzeichnis.

mkdir jar_compile01
cd jar_compile01
mkdir classes
mkdir -p src/com/demo
mkdir MATE-INFO

Im Klassenverzeichnis werden hier die kompilierten Klassen generiert. Das MATE-INFO-Verzeichnis enthält Manifestdateien, mit denen Erweiterungen und paketbezogene Daten definiert werden.

** Vorbereitung des Quellcodes ** Erstellen Sie eine Java-Datei unter src / com / demo.

# App.java
package com.demo;
public class App {
    public static void main(String[] arg) {
        System.out.println("Hello World!");
    }
}

** Vorbereitung der Manifestdatei ** Erstellen Sie eine Manifestdatei unter MATE-INFO.

# MANIFEST.MF
Main-Class: com.demo.App

Klassenzusammenstellung

Kompilieren Sie Java, um eine Klasse zu erstellen.

javac -sourcepath src -d classes src/com/demo/App.java

Beim Kompilieren werden die Klassen im Klassenverzeichnis erstellt.

■ Javac-Optionen </ font>

                         Erläuterung
-classpath Legen Sie den Benutzerklassenpfad fest und überschreiben Sie den Benutzerklassenpfad in der Umgebungsvariablen CLASSPATH. Mit CLASSPATH-Wenn keiner der Klassenpfade angegeben ist, ist der Benutzerklassenpfad das aktuelle Verzeichnis. Weitere Informationen finden Sie unter "Festlegen des Klassenpfads".
-sourcepath Wenn keine Option angegeben ist, wird die Quelldatei sowohl nach dem Pfad der Benutzerklasse als auch nach der Klassendatei durchsucht.
-d directory Legen Sie das Ausgabezielverzeichnis für Klassendateien fest. Wenn die Klasse Teil eines Pakets ist, erstellt javac nach Bedarf ein Verzeichnis und legt die Klassendatei in einem Unterverzeichnis ab, das den Paketnamen widerspiegelt. Zum Beispiel-d ./Geben Sie Klassen an und der Name der Klasse lautet com.demo.Wenn es sich um eine App handelt, lautet die Klassendatei./classes/com/demo/App.Es wird Klasse sein.
-Wenn d nicht angegeben ist, legt javac die Klassendatei im selben Verzeichnis wie die Quelldatei ab.
-Beachten Sie, dass das durch d angegebene Verzeichnis nicht automatisch zum Benutzerklassenpfad hinzugefügt wird.
-encoding Codierungsname der Quelldatei(EUCJIS/SJIS usw.)Angegeben.-Wenn keine Codierung angegeben ist, wird der Standardkonverter der Plattform verwendet.
-g Generiert alle Debug-Informationen, einschließlich lokaler Variablen. Standardmäßig werden nur Zeilennummern und Informationen zur Quelldatei generiert.
-g:none Es werden keine Debug-Informationen generiert.
-g:{keyword list} Generiert nur bestimmte Arten von Debug-Informationen, die durch eine durch Kommas getrennte Schlüsselwortliste angegeben werden. Die folgenden Schlüsselwörter sind gültig:
source Debug-Informationen zur Quelldatei
lines Debug-Informationen zur Zeilennummer
vars Informationen zum Debuggen lokaler Variablen
-nowarn Zeigen Sie keine Warnmeldung an.
-O Hinweis: -Die Option O funktioniert nicht mit den aktuellen Implementierungen von javac und oldjavac.
Optimieren Sie Ihren Code zur Laufzeit.-Durch Angabe der Option O wird die Kompilierung verlangsamt und die Größe der erstellten Klassendateien erhöht, was zu schwer zu debuggenden Programmen führen kann.
Vor dem Java 2 SDK, javac-g Option und-Die Option O konnte nicht zusammen verwendet werden. Java 2 SDK v1.In 2 können Sie diese Optionen kombinieren, jedoch mit dem Potenzial für unerwartete Konsequenzen wie verlorene Variablen, Verschieben oder Verlieren von Code.-Auch wenn Sie die Option O angeben-Die Option abhängig wird automatisch aktiviert oder-Die Option g wird nicht mehr automatisch deaktiviert.
-sourcepath sourcepath Gibt den Quellcodepfad an, nach dem nach Klassen- oder Schnittstellendefinitionen gesucht werden soll. Wie der Benutzerklassenpfad sind mehrere Einträge im Quellpfad Semikolons.(;)Trennen Sie sich mit. Der Quellpfadeintrag kann ein Verzeichnis, ein JAR-Archiv oder ein ZIP-Archiv sein. Wenn Sie ein Paket verwenden, muss der lokale Pfadname im Verzeichnis oder Archiv den Paketnamen widerspiegeln.
Wenn die Quelle gefunden wird, werden die im Klassenpfad gefundenen Klassen automatisch neu kompiliert.
-verbose Gibt die redundante Ausgabe an. Druckt Informationen für jede geladene Klasse und zu kompilierende Quelldatei.

Jar-Datei erstellen

Erstellen Sie eine JAR-Datei mit dem Befehl jar.

jar cvfm app.jar MATE-INFO/MANIFEST.MF -C classes .
#Das Folgende ist die Anzeige nach Ausführung des Befehls
Manifest hinzugefügt
com/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
com/demo/Wird hinzugefügt(Eingeben=0)(aus=0)(0%Gelagert)
com/demo/App.Klasse wird hinzugefügt(Eingeben=421)(aus=292)(30%Schrumpfte)

■ JAR-Optionen </ font>

Möglichkeit Erläuterung
-c Erstellen Sie eine neue komprimierte Datei
-t Zeigen Sie ein Inhaltsverzeichnis an
-x Dekomprimierung der komprimierten Datei
-u JAR-Datei aktualisieren
-v Verarbeitungsdetails in der Befehlszeile anzeigen
-f Angabe des JAR-Dateinamens
-m Geben Sie die Manifestdatei an
-i Erstellen Sie Indexinformationen
-o Nicht komprimieren
-M Erstellen Sie keine Manifestdatei
-C Importieren Sie die angegebene Datei

Führen Sie die Jar-Datei aus

Überprüfen Sie die Jar-Dateistruktur.

jar tf app.jar
#Das Folgende ist die Anzeige nach Ausführung des Befehls
META-INF/
META-INF/MANIFEST.MF
com/
com/demo/
com/demo/App.class

Führen Sie die Jar-Datei aus.

java -jar app.jar
#Das Folgende ist das Ausführungsergebnis
Hello World!

■ Java-Optionen </ font>

                              Erläuterung
-client Wählen Sie die Java HotSpot Client-VM aus. Dies ist das Standardverhalten.
-server Wählen Sie die Java HotSpot Server-VM aus.
-classpath
-cp
Gibt eine Liste von Verzeichnissen, JAR-Archiven und ZIP-Archiven an, in denen nach Klassendateien gesucht werden soll. Jeder Eintrag im Klassenpfad ist ein Doppelpunkt(:)Trennen Sie sich mit.
-Klassenpfad oder-Wenn Sie cp angeben, überschreiben die Werte dieser Optionen die Einstellungen in der Umgebungsvariablen CLASSPATH.
-mit Klassenpfad-Wenn cp nicht verwendet wird und CLASSPATH nicht festgelegt ist, ist der Benutzerklassenpfad das aktuelle Verzeichnis.(.)Wird sein.
-Dproperty=value Legt den Wert der Systemeigenschaften fest.
-jar Führen Sie das in der JAR-Datei gekapselte Programm aus. Das erste Argument ist der Name der JAR-Datei, nicht der Name der Startklasse. Damit diese Option funktioniert, sollte das JAR-Dateimanifest "Main" enthalten.-Class:Sie müssen eine Zeile der Form "Klassenname" angeben.
Im Klassennamen public static void main, das als Startposition der Anwendung fungiert(String[] args)Gibt die Klasse an, die die Methode enthält.
Weitere Informationen zu JAR-Dateien und ihren Manifesten finden Sie auf der Seite JAR-Tools und im Java-Tutorial "Jar-Dateien". Mit dieser Option wird die angegebene JAR-Datei als Quelle für alle Benutzerklassen verwendet, und andere Benutzerklassenpfadeinstellungen werden ignoriert.
Unter Solaris 8"java -jar"Die JAR-Datei, die mit Optionen ausgeführt werden kann, enthält einen Ausführungsberechtigungssatz. Deshalb,"java -jar"Es ist auch möglich, ohne Verwendung auszuführen.
-verbose
-verbose:class
Zeigt bei jedem Laden Informationen zur Klasse an.
-verbose:gc Jedes Mal melden, wenn ein Garbage Collection-Ereignis auftritt.
-verbose:jni Native Methoden und andere Java Native Interface(JNI)Informationen über die Verwendung von melden.
-version Versionsinformationen anzeigen und beenden.
-showversion Versionsinformationen anzeigen und fortfahren.
-?
-help
Verwendung anzeigen und beenden.

Recommended Posts