Wie bündle ich eine JRE mit Launch4j?

80

Ich habe Launch4J auf meinem Computer und es ist ein großartiges Programm. Eine seiner Funktionen, die mich interessiert, ist die Möglichkeit, eine JRE in der allgemeinen EXE-Datei zu bündeln. Ich kann jedoch keine Dokumentation finden, die beschreibt, wie dies zu tun ist.

Wie bündle ich eine JRE mit der EXE? Und wo kann ich eine kompakte, tragbare JRE zum Laufen bringen? Die Download-Links unter Oracle gelten für die Installationspakete.

CodeBunny
quelle
4
Mit Launch4j können Sie eine JRE mit Ihrer Exe bündeln , also daneben. Sie können es nicht verwenden, um die JRE in Ihre Exe einzubetten.
THelper
Was bedeutet das überhaupt ...
DKIT

Antworten:

82

Nach einigen Versuchen bekomme ich endlich eine Problemumgehung, um das jre in meiner Anwendung zu bündeln:

Ich verpacke meine App als Zip-Datei mit den folgenden Ordnern:

containerFolder
|- jre
      |-bin (in bin there is java.exe)
      |-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)

In der XML-Datei von launch4j konfiguriere ich das jre wie folgt:

<jre>
    <path>../jre</path>
    <opt>-DgvSIG.confDir=../cfg</opt>
</jre>

Der Trick dabei ist, dass der Pfad nicht zur Datei java.exe führt. Der Pfad zum jre ist relativ zur Position der EXE-Datei und sollte auf einen Ordner vor der Datei java.exe verweisen

Der von mir verwendete JRE-Ordner ist nur ein Kopieren und Einfügen aus dem auf einem Windows-System installierten JRE-Ordner.

Francisco Puga
quelle
4
Das hat mir sehr geholfen! Die Dokumente sind nicht allzu klar darüber ... Funktioniert wie ein Zauber :-)
Konrad 'ktoso' Malawski
Hallo, was ist dieser Pfad? <Pfad> ../jre </ path> Entweder handelt es sich um einen vorhandenen Pfad im Ordner C: //..java oder um ein neues Java-JRE-Installationsprogramm, das heruntergeladen wird.
RajaReddy PolamReddy
@ RajaReddyPolamReddy ist der relative Pfad von Ihrer EXE-Datei zu dem Ordner, in dem sich das JRE in Ihrer Anwendung befindet
Francisco Puga
9
In der Frage wurde gefragt, wie die JRE in der EXE mit launch4j gebündelt werden soll. Diese Antwort zeigt, wie Sie launch4j anweisen, eine bestimmte JRE zu verwenden, die Sie mit Ihrer EXE gebündelt haben , jedoch nicht darin. Dies scheint das Beste zu sein, was mit launch4j erreicht werden kann. (Eine andere Antwort unten zeigt eine Möglichkeit, ein Installationsprogramm zu erstellen, das dann sowohl Ihre EXE als auch die JRE installiert, die JRE jedoch nicht in der EXE.)
Enwired
1
Und was ist mit JDK11, das nicht mit einer JRE geliefert wird?
Panagiss
12

Ich habe Folgendes getan und es hat bei mir mit ver Launch4j 3.11 funktioniert:

  1. Erstellt einen neuen Ordner für meine Anwendung (z. B. MyApp).
  2. Kopierte die JAR-Datei aus dem Ordner "Java Project Dist" zusammen mit dem Ordner "Lib" in die MyApp.
  3. Erstellt einen Ordner mit dem Namen jre in meinem Anwendungsordner MyApp, sodass der MyApp-Ordner jetzt Folgendes enthält:
    • MyApp.jar
    • lib <- Dies hat die Bibliotheken, die von meiner Java-App benötigt werden.
    • jre
  4. Kopierte die Ordner bin und lib aus dem Ordner java jre (C: \ Programme (x86) \ Java \ jre7) nach MyApp \ jre
  5. Nachdem Sie in Launch4j alle erforderlichen Optionen festgelegt haben, setzen Sie den Pfad für die gebündelte JRE auf "jre".

    Launch4j JRE-Optionen

  6. Stellen Sie sicher, dass in den Suchoptionen "Nur private JDK-Laufzeiten verwenden" ausgewählt ist.
Ahmed Awad
quelle
6

Das gleiche Problem wie du Kumpel. Keine Sorge jetzt. Es ist alles mit der maximalen Tiefe zu lösen, um zukünftige Lösungen zu lösen. Lösung, wie Sie Ihre JRE für Ihr JAR bündeln können, ohne dass der Benutzer Java installieren muss oder nicht. Ihre Java-Anwendung wird ausgeführt.

  1. Kopieren libund binOrdner aus Ihrem JRE- Ordner in Ihren Projekt-Dist-Ordner

jar to exe Umwandlung

  1. Öffnen Sie launch4j und geben Sie die folgende Einstellung ein. Geben Sie hier die Bildbeschreibung ein

Der Trick ist, dass Sie den vollständigen Pfad zur einschließlich javaw.exe angeben müssen.

Genießen!!!!

Daniel Adenew
quelle
1
Legen Sie eine beliebige Datei in den dist-Ordner, die diesen Fehler beim Bereinigen und Erstellen verursacht: Datei kann nicht gelöscht werden ...
ParisaN
0

Ich habe das gerade getan. Beschreiben Sie oben klar die Methode zum Bündeln von jre.

Hier teile ich nur eine Erfahrung, mit der ich zu kämpfen hatte. Wenn Sie eine Installer-Exe nach der von launch4j erstellten Wrapper-Exe erstellen möchten, achten Sie auf den Dateipfad für launch4j und jre. Dies ist mein Weg, auf dem ich meine Probleme gelöst habe:

launch4j, bin / jre, resources / bin / jre.

launch4j, bin und resources befinden sich auf derselben Ebene.

Xloon
quelle
-2

Das jre befindet sich normalerweise in Ihrem SDK-Ordner. Ja, die Online-Links sind Installationsprogramme, aber nach der Installation befindet sich die JRE jetzt auf Ihrer lokalen Festplatte. Meins befindet sich in

${jdk folder}\jre

Die Teile, die Sie nicht aus der JRE benötigen, könnten wahrscheinlich manuell entfernt werden, wenn Sie es wirklich wollten (ich bin nicht sicher, was online verfügbar ist).

hbhakhra
quelle
Wie bündle ich es in der EXE? Ich versuche, alles in das Glas zu packen, damit ich mir keine Sorgen machen muss, wenn der Benutzer Java installiert hat. Mir ist klar, dass es wahrscheinlich die beste Idee ist, sie Java herunterladen zu lassen. Ich möchte jedoch mit all meinen Bereitstellungsoptionen experimentieren.
CodeBunny
3
@ CodeBunny Dies ist nicht möglich mit Launch4j allein, aber jemand hat eine andere nette Lösung gefunden: mark.koli.ch/…
Zero3