"Einführung in Java, das erfrischend verstanden wird, 2. Ausgabe" Kapitel 13 Als ich an Übung 13-2 und Übung 13-3 arbeitete Ich stolperte über das Generieren einer Jar-Datei für eine Klassendatei, die zu einem Paket gehörte, und das Ausführen einer Jar-Datei. Ich werde in diesem Artikel vorstellen, was ich damals getan habe.
OS: macOS Catalina 10.15.6 JDK:14.0.1
Im Terminal ausführen
(1) Generieren Sie eine Jar-Datei von "Main.java", die im Paket "hoge" gespeichert ist.
//Aktuelles Verzeichnis einstellen
HIrokinoMacBook-Pro:~ user$ cd /Users/user/src/Java/sukiri1/Chapter6/hoge
//Glas erzeugen
HIrokinoMacBook-Pro:hoge user$ jar -cvfm test.jar manifest.txt Main.class
Manifest hinzugefügt
Main.Klasse wird hinzugefügt(Eingeben=417)(aus=284)(31%Schrumpfte)
"Test.jar" wurde in / Users / user / src / Java / sukiri1 / Chapter6 / hoge erstellt.
② ** Das generierte Jar kann nicht ausgeführt werden **
//Ausführung der JAR-Datei
HIrokinoMacBook-Pro:hoge user$ java -jar test.jar
Error:Hauptklasse Hoge.Main konnte nicht gefunden und geladen werden
Ursache: java.lang.ClassNotFoundException: hoge.Main
●Main.java Hauptklasse im Hoge-Paket aufbewahren
package hoge;
public class Main {
public static void main(String[] args) {
System.out.println("hello.java");
}
}
Im folgenden Verzeichnis gespeichert /Users/user/src/Java/sukiri1/Chapter6/hoge/Main.java
● Manifestierte Inhalte
Manfest-Version: 1.0
Main-Class: hoge.Main
↓ Referenz https://ameblo.jp/syosinsyaprogram/entry-11775802006.html http://daiad.webcrow.jp/java/jar.html
Ursprünglich wurde das aktuelle Verzeichnis auf "cd / Users / user / src / Java / sukiri1 / Chapter6 / hoge" gesetzt. Wechseln Sie zu "cd / Users / user / src / Java / sukiri1 / Kapitel 6" (eine Ebene höher)
HIrokinoMacBook-Pro:hoge user$ cd /Users/user/src/Java/sukiri1/Chapter6
HIrokinoMacBook-Pro:Chapter6 user$
Ursprünglich war es "jar -cvfm test.jar manifest.txt Main.class", aber "hoge /" wurde hinzugefügt, um "manifest.txt" und "Main.class" im "hoge" -Paket zu enthalten. Geben Sie Folgendes an und führen Sie es im Terminal aus.
jar -cvfm test.jar hoge/manifest.txt hoge/Main.class
"Test.jar" wird in / Users / user / src / Java / sukiri1 / Chapter6 erstellt.
Über ①② Wenn Sie eine JAR-Datei mit dem im Paket festgelegten aktuellen Verzeichnis generieren (in diesem Fall "hoge"), Es wird ein JAR erstellt, in dem das Paket nicht in der JAR-Datei vorhanden ist. (In diesem Fall Glas ohne Paket "hoge")
Wenn ich das Glas mit "java -jar" ausführte, wurde es daher in der "Hauptklasse:" des Manifests als "hoge.Main" angegeben. In der tatsächlich generierten JAR-Datei ist die "Main.class" nicht im "hoge" -Paket gespeichert. Wie dieses Mal heißt es "Fehler: Hauptklasse hoge konnte nicht gefunden und geladen werden. Haupt" Es wurde darauf hingewiesen, dass "hoge.main die Klasse nicht finden konnte?"
Lassen Sie uns jetzt das Glas laufen.
HIrokinoMacBook-Pro:Chapter6 user$ java -jar test.jar
hello.java
Erfolgreich.
Wenn beim Erstellen und Ausführen einer JAR-Datei mithilfe des Manifests ein ähnlicher Fehler auftritt Ist das aktuelle Verzeichnis geeignet und ist die Paketkonfiguration für den Befehl jar generator geeignet? Es ist eine gute Idee zu überprüfen, wie die "Main.class" im Manifest geschrieben ist!
Recommended Posts