Vielleicht verstehe ich nicht richtig, aber ich glaube, was Sie wollen, ist Ihr Programm mit der anderen JAR-Datei (auch) auf Ihrem Klassenpfad auszuführen.
Nehmen wir an, Sie haben einen Kern in A.jar und einige Bibliotheken in B.jar. (:, Auf Windows mit ersetzen):
java -cp A.jar:B.jar main.class.Name args
Wo main.class.Name
Ihr Hauptklassennamen und args
ist, wo alle Ihre Befehlszeilenargumente geht Sie könnten Ihr Programm wie folgt ausführen.
Class-Path: B.jar
Main-Class: main.class.Name
Dann können Sie das Programm wie folgt ausführen:
Sie auch ein Main-Class
und Class-Path
Attribut in Ihrem manifest.mf
so sagen kann
java -jar A.jar args
Sie die Wahrheit zu sagen, habe ich zu denken, dass es glatt war, meine Anwendung als eine einzelne JAR-Datei zu verteilen, mit allen Abhängigkeiten extrahiert und in einer einzigen riesigen JAR-Datei verpackt. Das Problem ist, dass einige Anwendungen mit ziemlich vielen Abhängigkeiten enden, und jedes Mal, wenn ich eine Änderung an mein Code machte, bedeutete es auch, dass ich den gesamten abhängigen Code verteilen musste, obwohl sich nichts in den Abhängigkeiten geändert hatte. Das bedeutete, riesige JAR-Dateien zu verteilen, auch wenn es nur geringfügige Änderungen geben könnte.
Mit einem Manifest-Attribut Class-Path
kann ich Anwendungen verteilen, die genau wie eine einzelne JAR-Datei ausgeführt werden können (Doppelklick auf einige Systeme oder die einfache "java -jar
" Beschwörungsformel), aber eine Tonne sparen Zeit und Bandbreite, indem nicht alle doppelten Bibliotheken mit nachfolgenden Softwareversionen übertragen werden.
Es ist auch möglich, alle abhängigen JAR-Dateien in ihr eigenes Verzeichnis zu setzen (nennen wir es lib
jetzt) und ändern Sie die Class-Path
so dass alle JAR-Pfade aussehen „lib/B.jar
“. Dann enden Sie nicht mit Ihrem Hauptprogrammverzeichnis voller kleiner JAR-Dateien.
Meinst du, dass du ein Glas hast, das andere Gläser enthält? Oder möchten Sie abhängige Gläser in Ihr Glas aufnehmen? Was genau ist das Problem? – djna
Ich habe die Frage aktualisiert :) –