Launch4J - wie befestigen abhängigen jars erzeugten exe
Ich habe ein einfaches java-Projekt, das erfordert externe jars.
Ich Baue diese mit netbeans und nach Clean und Build-Befehl, kann ich im dist-Verzeichnis die folgende Struktur:
-myApp.jar
-lib/
library1.jar
library2.jar
typisch, würde ich sagen.
Nun würde ich gerne verteilen myApp.jar mit abhängigen Bibliotheken als eine exe-Datei.
Ist das möglich? Ich versuche, mit Launch4J. In der GUI Erzeuge ich die config-Datei gibt es einige Optionen in cp Abschnitt
<cp>lib/swing-layout-1.0.4.jar</cp>
aber es scheint zu sein, classpath, und es ist der einzige Ort, den ich verweisen kann um meine extra Gläser.
Nach der exe-Datei wird erstellt, ich kann nicht finden, abhängig libs in der exe-Datei (exe-Datei kann geöffnet werden mit winrar) und damit meine Anwendung abstürzt.
Wie kann ich die exe-Datei richtig dann?
Vielen Dank für Ihre Hilfe.
- Ich habe Erfahrung in der Erstellung von ausführbare jar-Datei mit Eclipse. der Prozess ist einfach da.
- Danke, keine chance zu wechseln, um Eclipse für mich. Es scheint, dass ich pack alle meine abhängigen jars in einem jar und dies das Problem lösen wird.
- Sie können tun, ohne den Wechsel zu eclipse als gut. Frage ist, brauchen Sie die ausführbare Datei wie .exe oder eine ausführbare jar-Datei zu tun. Nur die manifest-Datei die Punkte, um die Klasse benötigt, um ausgeführt zu werden. Ich erinnere mich da war, wenn ich auf diese gleiche Frage hatte ich Ihnen helfen tuts. Da werden Sie feststellen, dass richtige manifest-Datei ist, was funktioniert der trick
- Vielen Dank für Ihre Kommentare. Ich brauche definitiv eine exe-Datei nicht in der jar. In der Zwischenzeit fand ich den link mavistechchannel.wordpress.com/2010/08/17/..., die mir geholfen Gebäude ein jar mit allen abhängigen jars enthalten. Einmal bekam ich ein jar, ich habe meine Lanuch4J erzeugte exe-Datei funktioniert Prima.
- ja, dass ist eine gute Arbeit herum. erzeugen einzelne arbeiten jar-Datei, die beinhaltet alle Abhängigkeiten und erzeugt dann die ausführbare exe-Datei mit launch4j
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es oft geschieht, nicht in der Lage ist das problem zu lösen, brachte ich es auf StackOverflow ... und ziemlich bald nach der Veröffentlichung die Frage, ich habe eine Idee.
Also die Antwort auf meine Frage ist:
Alle abhängigen jars in eine Haupt-jar.
Es dauerte einige Zeit, um Infos zu finden wie ich es machen kann.
Menschen zu helfen, entschloss ich mich zur Veröffentlichung einer detaillierten Anleitung hier - Sie basieren auf Netbeans 7.4.
Folgenden Artikel aus http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/ ich habe das ant script bauen, dass ein-Glas-app für mich.
Ich könnte dann manuell erstellen exe-Datei über Launch4J
Habe ich dann beschlossen, dass ich will mehr automatisierte Aufgabe, und das habe ich gemacht, Ameise baut exe für mich (über Launch4J)
Dann merkte ich, dass ich tun muss "clean und build" vor meinem automatisierte Aufgabe, die (in Punkt 2)/ich habe beschlossen, dass ich möchte, zu reinigen und zu bauen, um automatisch durchgeführt werden, bevor die exe bauen
Putting alle zusammen, ich befestige meine ant-build-Skript aus der Punkte 1,2,3:
Ist es erforderlich, zu Bearbeiten build.xml und dann den Inhalt unten gefunden werden, bevor "Projekt" end-tag
dann in Netbeans mit der rechten Maustaste auf die build.xml und wählen Sie:
Soll /Andere Ziele /Paket-für-launch4j
exe-Datei, die bereit ist, in den exe-Ordner 🙂
Ich Stunden damit zugebracht haben, auf dieses Problem. So, hier ist mein Beitrag.
Hier das problem: wie erfolgreich setzen Sie Ihre externe jars, dass Ihre .JAR-Programm muss INNERHALB der .exe-Datei, die Sie generieren.
Gehen wir davon aus, dass Sie bereits, und richtig konfiguriert, das externe jar in eclipse/netbeans und ALLE FUNKTIONIEREN mit dem Befehl: java-jar yourprogram.jar.
Also das eigentliche problem ist, wie um sicherzustellen, dass dieser .EXE-Datei enthält die externen jars, sonst funktioniert es nicht richtig.
1) Zunächst einmal müssen Sie vergessen Launch4J und anyother Programm.
2) Installieren JSmooth, ich empfehle, dass Sie verwenden die windows-version.
3) Auf der linken Seite im Menü gibt es einen button "Programm". Klicken Sie auf es.
4) sehen Sie einen Reiter "Classpath" - panel. Klicken Sie auf das plus (+) und fügen Sie Ihre externen .jar-Dateien. Und das ist es!!
Vergessen Sie nicht, setzen Sie Ihre .jar-Anwendung, markieren Sie die checkbox "verwenden Sie am eingebettete jar" und wählen Sie die main-Klasse richtig. Wird es funktionieren.
Ich auch vor dem gleichen Problem beim migrieren meiner .jar zu exe. Ich hatte auch viele abhängige Bibliotheken. So das waren die Schritte, die ich durchgeführt :
Herunterladen und Installieren launch4j.
Öffnen Sie Ihr Projekt in netbeans. Reinigen Sie und erstellen Sie das Projekt.
Das ist es 🙂
Setzen verschiedene links von Orten, die geholfen hatte, mich
und vor allem
schnelle tut'
Wenn Sie konvertieren Sie Ihre .jar-Datei
textarea schreiben Sie den vollständigen Pfad zu der lib (einschließlich der
lib ie "C:\folder\lib\file.jar")
Auch auf externe Bibliotheken mit Launch4j Sie haben ".jar" - Dateien die externen Bibliotheken in der Nähe Ihres .exe (meine sind nur im gleichen Ordner) dann in den "Classpath" setzen Sie den Pfad zu der .jar-Dateien in "Element Bearbeiten: "
In launch4j gehen, um den classpath tab. Markieren Sie das benutzerdefinierte Feld classpath. Im Bearbeiten-Feld, geben Sie den vollständigen Pfad für jedes Glas, das Sie aufnehmen möchten, und drücken Sie akzeptieren. Wenn Sie fertig sind geben Sie einfach den Namen der main-Klasse in das separate Feld (ie MyProg). Alle Gläser werden jetzt einbezogen werden in die exe-Datei.
PS ich habe alle jars im selben Verzeichnis. Ich bin mit der version 3.12