Aufruf von „java -jar MyFile.jar“ mit erweiterten Klassenpfadoptionen
Beim Versuch, eine kompilierte JAR-Datei auszuführen, die externe Bibliotheken einbezieht und gegenüberstellt Da es sich um eine „java.lang.ClassNotFoundException“ handelt, ist es wichtig, die Grundlagen des Java-Ausführungsprozesses zu verstehen.
Java bietet zwei Optionen zum Angeben von Klassenpfaden:
- -jar: Enthält die JAR Datei und ihren im Manifest definierten Klassenpfad.
- -cp: Gibt den vollständigen Klassenpfad manuell an, einschließlich aller Abhängigkeiten.
Falsche Verwendung
Der Versuch, sowohl -jar als auch -cp gleichzeitig zu kombinieren, ist falsch und führt zu dem oben genannten Fehler.
Lösung
Es gibt zwei gültige Ansätze, um dieses Problem zu lösen:
1. Manifest-definierter Klassenpfad:
- Erstellen Sie eine Manifestdatei innerhalb der JAR und geben Sie den erforderlichen Klassenpfad an.
- Verwenden Sie java -jar, um die JAR auszuführen, die automatisch die angegebene Datei lädt Abhängigkeiten.
2. Expliziter Klassenpfad:
- Verwenden Sie java -cp, um den vollständigen Klassenpfad zu definieren, einschließlich der Haupt-JAR und aller externen JARs.
- Geben Sie die Hauptklasse explizit in der Befehlszeile an.
Zum Beispiel:
java -cp 'MyProgram.jar:libs/*' main.Main
Hinweis: Die dir/*-Syntax fügt alle JAR-Dateien aus dem angegebenen Verzeichnis dem hinzu Klassenpfad.
Zusätzliche Tipps:
- Für den manifestdefinierten Ansatz verwenden Sie Ants Aufgabe, die Manifestdatei mit dem gewünschten Klassenpfad dynamisch zu generieren, bevor das JAR erstellt wird.
- Wenn die Option -jar praktischer ist, stellen Sie sicher, dass alle Abhängigkeiten im Manifest des JAR enthalten sind.
Das obige ist der detaillierte Inhalt vonWie führe ich eine JAR-Datei mit externen Bibliotheken aus und vermeide „java.lang.ClassNotFoundException“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn