Java Eclipse: Unterschied zwischen dem Exportieren als JAR und dem Exportieren als ausführbare JAR

87

Was ist der Unterschied bei der Sonnenfinsternis zwischen dem Exportieren als JAR-Datei und dem Exportieren als ausführbare JAR-Datei? Sind sie nicht beide lauffähig? Was sind die Vor- und Nachteile von jedem?

Naja eigentlich
quelle

Antworten:

98

Das ausführbare JAR enthält eine MANIFEST.MF-Datei, die die Hauptklasse definiert, die ausgeführt werden soll, wenn das JAR ausgeführt wird.

Nicht ausführbare Jars sind nur Bibliotheken von Klassen, die dem Klassenpfad hinzugefügt werden können, damit Code wiederverwendet wird (er enthält auch die Manifestdatei, aber keine Hauptklasse dort).

Bozho
quelle
Wenn wir eine Datei nur als JAR anstelle eines ausführbaren JAR exportieren, müssen wir in manifest.mf die Hauptklasse und den Klassenpfad der Bibliothek angeben.
MR und
20

Eine ausführbare JAR-Datei ist eine JAR-Datei mit einer eingebetteten Manifest-Datei, die die Deklaration "Main-Class:" enthält. Die "Hauptklasse" muss definiert werden, damit die Java-Laufzeit weiß, welche Klasse aufgerufen werden soll, wenn das JAR "ausgeführt" wird. Wenn ein JAR kein Manifest mit der "Hauptklasse" enthält: Es wird nicht als "ausführbares JAR" betrachtet - es ist nur eine Bibliothek mit Java-Code.

Ich würde vermuten, dass dies der Unterschied ist, wie Eclipse das Glas exportiert, aber nicht 100% sicher.

Weitere Informationen finden Sie unter diesem Link: http://www.skylit.com/javamethods/faqs/createjar.html

Andy White
quelle
17

Bei der Standard-JAR-Datei müssen Sie die Klasse mit der Hauptmethode in der Befehlszeile angeben, wenn Sie das JAR ausführen. Bei einer ausführbaren JAR gibt es eine Manifestdatei, die diese Informationen enthält, sodass Sie sie einfach eingeben java -jar myRunnable.jaroder einfach doppelklicken können.

Eric-Karl
quelle
0

In meinem Fall habe ich als JAR exportiert, als ich die gesamte Hauptklasse und das gesamte Pfadverzeichnis der Bibliotheken in der Datei manifest.mf angegeben hatte. Wenn viele Anwendungen dieselbe Bibliothek verwenden, ist es nicht erforderlich, die gemeinsam genutzte Bibliothek für jedes JAR zu exportieren. Es macht das Laufen Glas schneller. Aufgrund von Konfigurationsproblemen in verschiedenen Serverklassenpfaden kann jedoch häufig nicht auf die Bibliothek zugegriffen werden. In diesem Fall ist es sinnvoll, das ausführbare JAR zu exportieren, wodurch die Ausführung der Datei langsam und umfangreich wird.

HERR UND
quelle