Ich habe so viele Artikel / Erklärungen dazu gelesen und zu viele Stunden verbracht, aber alles ist entweder zu breit oder spezifisch.
Diese Frage betrifft nur ein Applet, das ich gemacht habe. Es enthält eine Klasse und benötigt 2 andere Jar-Bibliotheken. Ich habe diese in die Projekte aufgenommen (mehrere Projekte, weil ich dies in Netbeans und Eclipse versucht habe ... es ist einfach ein Einklassenprojekt neu zu erstellen). Der Sinn von all dem ist, dass mein HTML / Web-Projekt nicht mehr als ein Jar verarbeiten oder auf sie verweisen muss. Es ist auch kein kompliziertes Applet / Projekt.
Ursprünglich habe ich es in Netbeans gemacht. Es hat das Hauptpaket und nach dem Hinzufügen der 2 Jars werden sie in einen "Libraries" -Bereich (den "Resources" -Ordner) gelegt. Nach dem Erstellen erstellt Netbeans ein Jar für mein einzelnes Paket / eine Klasse und stellt dann die 2 anderen Bibliotheken in ein "lib" -Verzeichnis daneben. Ich möchte, dass sie in einem verteilbaren Jar sind. Aus den vielen Dingen, die ich durchgesehen habe, habe ich versucht, folgendes in build.xml zu schreiben:
%Vor%Aber es produziert nichts. Ich habe das von NetBeans - Bereitstellung in einem Glas . Ich weiß nicht, wie man build.xml benutzt, also wäre ich nicht überrascht, wenn etwas (natürlich) schief läuft, aber ich bekomme keine Fehler- / Warnmeldungen.
Wenn ich es in Eclipse gemacht habe, kombiniert es sie effektiv, aber wenn ich das Glas in meinem tatsächlichen Webprojekt verwende, sagt es, dass es die Klassen von den anderen 2 Gläsern nicht finden kann. Ich würde nicht verstehen, wie ich es beheben kann, aber ist es ein Classpath-Problem? In Eclipse mache ich ein neues Verzeichnis namens "lib" und setze die Jars darin. Dann klicke ich mit der rechten Maustaste auf das Projekt, gehe zu "Java Build Path" und füge die Jars hinzu und überprüfe sie unter "Order and Export". Nach den Dingen, die ich gelesen habe, klicke ich mit der rechten Maustaste auf das Projekt, wähle "Exportieren", wähle "Jar", deaktiviere die ".classpath" und ".project" Dateien, nur "Exportiere generierte Klassendateien und Ressourcen" und dann Erlaube es, die Manifest-Datei zu generieren. Wie ich schon sagte, erzeugt dies ein Jar, aber sein Inhalt ist mein Paket und dann ein "lib" Verzeichnis, das die 2 anderen Jars hat. Das Manifest ist da, aber es ist ziemlich leer und referenziert keine Dateien (nicht sicher, ob das wichtig ist). Wenn ich es in meine Web-App lege, sagt es, dass das Applet die anderen Klassen nicht finden kann.
Es scheint einfach zu sein - ein Paket / eine Klasse, zwei externe Jars ... kombinieren sich zu einem Jar, wenn sie für die Verteilung als Applet gebaut werden. Irgendwelche Ideen?
UPDATE:
Seit wir Maven benutzt haben, hat jemand nach einem Maven-Plugin gesucht. Also haben wir am Ende ein neues Projekt erstellt, das das Applet enthält (da es in mehreren Projekten verwendet wird), und haben es am Ende in unserem pom.xml
verwendet:
Und es war schön, weil wir damit unser Code Signing-Zertifikat verwenden konnten, um es auch automatisch zu signieren.
Zunächst möchte ich sagen, dass es wirklich keinen Grund gibt, die jars zu kombinieren - Sie können ein Applet mit Ihrer Klassendatei (nicht in einem jar) und seinen separaten abhängigen jars bereitstellen.
Wenn Sie jedoch das Gefühl haben, aus Ihrer Klasse und all ihren Abhängigkeiten einen großen Krug machen zu müssen, dann können Sie das tun.
Sie können JAR-Dateien jedoch nicht in eine andere JAR-Datei einfügen - JAR-Dateien funktionieren nicht auf diese Weise. Was Sie brauchen, ist für den gesamten Inhalt aller JAR-Dateien, die extrahiert werden sollen, und dann wieder in ein einziges ZIP-Fach gepackt.
Wenn Sie dies tun, würde ich vorschlagen, das Maven Build-Tool dafür zu verwenden. Sobald Sie Ihren Build mit Maven eingerichtet haben, können Sie das Maven Assembly Plugin konfigurieren, um ein großes jar zu erstellen für dich.
Ich weiß, dass Eclipse Maven unterstützt, und ich nehme an, dass NetBeans das auch tut.
Warum versuchen Sie nicht von der Basis Ihres bin-Verzeichnisses:
%Vor% Platzieren Sie Ihre externen JAR-Dateien an dem entsprechenden Speicherort in Ihrem bin
-Verzeichnis, und crasseln Sie Ihre Klassendateien manuell mit den externen JAR-Dateien.
Alternativ finden Sie diesen Thread welches mehr Informationen für Sie zur Verfügung stellen könnte.