Generieren und Ausführen der Jar-Datei der zum Paket gehörenden Java-Datei

Überblick

"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.

Umgebung

OS: macOS Catalina 10.15.6 JDK:14.0.1

Status

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. スクリーンショット 2020-08-26 23.06.24.png

② ** 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

Inhalt jeder Datei

●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

Ansatz

(1) Legen Sie die Hierarchie fest, in der das Paket im aktuellen Verzeichnis gespeichert ist

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$ 

(2) Geben Sie an, dass die txt-Datei und die Klassendatei des Manifests, das im Befehl jar jar enthalten ist, im Paket enthalten sind.

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. スクリーンショット 2020-08-26 23.08.02.png

Ü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.

Am Ende

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

Generieren und Ausführen der Jar-Datei der zum Paket gehörenden Java-Datei
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts
JAVA: jar, aar, zeige den Inhalt der Datei an
Benennen Sie den Paketnamen einer vorhandenen JAR-Datei um
<java> Zip-Datei lesen und direkt in String konvertieren
[Java] Arten von Kommentaren und wie man sie schreibt
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Ausführen des WebCamCapture-Beispiels von NyARToolkit für Java
[Java] [Maven] Vorlage von pom.xml zum Registrieren der JAR-Datei eines Drittanbieters im lokalen Repository
Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe
Einstellungsmethode zum Verknüpfen von Java von Eclipse und Github / September 2017
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Befehl zum Überprüfen der Anzahl und des Status von Java-Threads
Vor- und Nachteile von Java
So ändern Sie den Inhalt der JAR-Datei, ohne sie zu dekomprimieren
[Java] Ich möchte auf jeden Fall MySQL verbinden !!! ~ Informationen zum Abrufen des JDBC-Treibers und des Speicherorts der JAR-Datei ~
[Java] Verschiedene Zusammenfassungen an die Leiter von Klassen und Mitgliedern
[Java] Generieren Sie einen Daten-URI aus einer Byte-Zeichenfolge mit Dateiinhalten. [Kotlin]
Grundlagen der Java-Entwicklung ~ Schreiben von Programmen (Variablen und Typen) ~
Sammlung ausgewählter Programmieraufgaben zum Erstellen und Erinnern (Java-Grundlagen)
Lesen Sie die ersten 4 Bytes der Java-Klassendatei und geben Sie CAFEBABE aus
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
So ermitteln Sie die Länge einer Audiodatei mit Java
Ersetzen Sie den Inhalt der Jar-Datei
Über Biocontainer fastqc und Java
Zusammenfassung des Pakets [Java Silver Study]
[Java] Geben Sie in stdin of Process ein
Protokollausgabe in Datei in Java
Hinweise zum Java-Pfad und -Paket
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
[Java] Erstellen Sie mit dem Befehl jar eine JAR-Datei, die sowohl komprimiert als auch nicht komprimiert ist
So zeichnen Sie JFR (Java Flight Recorder) auf und geben eine Dump-Datei aus
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
[Java] Beachten Sie, wie Sie RecyclerView verwenden und die animierte Swipe-Verarbeitung implementieren.
[Java-Verbesserungsfall] Wie man die Grenze des Selbststudiums und darüber hinaus erreicht
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Lesen der log4j-Einstellungsdatei in einem Java-Projekt, das in der JAR-Datei Memo zusammengestellt ist
[Java] Verwendung der File-Klasse
Nach 3 Monaten Java- und Frühlingstraining
[java] Zusammenfassung des Umgangs mit char
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
Java-Implementierung zum Erstellen und Lösen von Labyrinthen
[Java] Wie man Dateien ausgibt und schreibt!
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
[Java 7] Teilen Sie die Java-Liste und führen Sie den Prozess aus
Ausgabe des Buches "Einführung in Java"
[Einführung in Java] Informationen zu Variablendeklarationen und -typen
Beispiel zum Entpacken einer gz-Datei in Java
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
Zusammenfassung von Java Math.random und Import (Kalender)
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
Von Java nach C und von C nach Java in Android Studio
Diskriminierung von Enum in Java 7 und höher