Wenn eine Java-Anwendung ausgeführt wird, muss sie die Bytes der verwendeten Klassen in den Speicher laden. Daher gibt es bestimmte Anforderungen an den Speicherort der Bytecode-Dateien, die im Allgemeinen in die folgenden vier Situationen unterteilt werden:
1. Verwenden Sie eine Klasse ohne Paketnamen in dem Verzeichnis, in dem sich die aktuelle Anwendung befindet:
Klassen, die keinen Paketnamen in dem Verzeichnis haben, in dem sich die aktuelle Anwendung befindet, können direkt geladen und verwendet werden.
2. Verwenden Sie Klassen in der Klassenbibliothek in der Java-Laufzeitumgebung:
Die Klassen in der von der Java-Laufzeitumgebung bereitgestellten Klassenbibliothek haben alle Paketnamen, und die Anwendung muss die Importanweisung verwenden, um die Klassen in das entsprechende Paket einzuführen.
3. Verwenden Sie Klassen aus Verzeichnissen, die Nachkommen des aktuellen Verzeichnisses der Anwendung sind:
Die Nachkommenverzeichnisse im aktuellen Verzeichnis der Anwendung können als Paketnamen des benutzerdefinierten Pakets verwendet werden. Klassen mit diesem Paketnamen müssen in diesen Nachkommenverzeichnissen gespeichert werden. Die Anwendung kann die Importanweisung verwenden, um Klassen im Benutzer einzuführen -definiertes Paket.
4. Verwenden Sie Klassen in der Java-Laufzeitumgebungserweiterung:
Wir können den Befehl jar.exe verwenden, um die Bytecode-Dateien einiger Klassen in eine JAR-Datei zu komprimieren und die JAR-Datei dann in der Erweiterung der Java-Laufzeitumgebung zu speichern, dh die JAR-Datei in jrelibext zu speichern im JDK-Installationsordner, sodass Java-Anwendungen die Klassen in dieser JAR-Datei zum Erstellen von Objekten verwenden können.
Klasse mit Paketnamen
Gehen Sie davon aus, dass der Paketname der folgenden TestOne- und TestTwo-Klassen „moon.star“ lautet.
TestOne.java
packagemoon.star;//Paketanweisung publicclassTestOne{publicvoidfTestOne(){System.out.println(IamamethodInTestOneclass);}}
TestTwo.java
packagemoon.star;//Paketanweisung publicclassTestTwo{publicvoidfTestTwo(){System.out.println(IamamethodInTestTwoclass);}}
Speichern Sie TestOne.java und TestTwo.java im Verzeichnis C:1000moonstar und geben Sie dann dieses Verzeichnis ein, um die beiden Quelldateien zu kompilieren.
Jetzt komprimieren wir TestOne.class und TestTwo.class im Verzeichnis C:1000moonstar in eine JAR-Datei: Jerry.jar.
Zuerst schreiben wir eine Manifestdatei: hello.mf (Manifestfiles).
Hallo.mf
Manifest-Version:1.0Class:moon.star.TestOnemoon.star.TestTwoCreated-By:1.6
Speichern Sie hello.mf im Verzeichnis C:1000. Um mit dem Befehl jar eine JAR-Datei zu generieren, müssen Sie zuerst das Verzeichnis C:1000 eingeben, also das Verzeichnis über dem Paketnamen, und dann Verwenden Sie den Befehl jar, um eine Datei mit dem Namen Jerry.jar zu generieren.
C:1000>jarcfmJerry.jarhello.mfmoonstarTestOne.classmoonstarTestTwo.class
Wenn C:1000moonstar nur zwei Bytecode-Dateien hat, TestOne.class und TestTwo.class, können Sie auch den Befehl jar verwenden.
C:1000>jarcfmJerry.jarhello.mfmoonstar*.class
Kopieren Sie abschließend die vom Befehl jar im Verzeichnis C:1000 generierte Datei Jerry.jar in die Erweiterung der Java-Laufzeitumgebung, dh speichern Sie die Datei Jerry.jar im Ordner jrelibext der JDK-Installation Verzeichnis.
Klasse ohne Paketnamen
Wenn die Klassen TestOne und TestTwo keine Paketnamen haben, speichern Sie einfach TestOne.java und TestTwo.java unter C:1000 und kompilieren Sie die Bytecode-Dateien. Schreiben Sie eine Manifestdatei, speichern Sie sie dann unter C:1000, geben Sie das Verzeichnis C:1000 ein und verwenden Sie den Befehl jar.
C:1000>jarcfmJerry.jarhello.mfTestOne.classTestTwo.class
Wenn C:1000 nur zwei Bytecode-Dateien hat, TestOne.class und TestTwo.class, können Sie auch den Befehl jar verwenden.
C:1000>jarcfmJerry.jarhello.mf*.class
Kopieren Sie abschließend die vom Befehl jar im Verzeichnis C:1000 generierte Datei Jerry.jar in den Ordner jrelibext im JDK-Installationsverzeichnis. Die Anwendung kann TestOne.class und TestTwo direkt in der Datei Jerry.jar verwenden . .Klasse.