Wie kann ich mein Java-Programm in eine EXE-Datei konvertieren? [geschlossen]

500

Wie kann ich eine Java-Quelldatei (* .java) oder eine Klassendatei (* .class) in eine EXE-Datei konvertieren?

Ich brauche auch ein Installationsprogramm für mein Programm.

Waseem
quelle
1
einfacher Hack für Applets: Schreiben Sie einen C-Code mit main und einen Aufruf, um "system" wie system ("appletviewer java_src_file") zu funktionieren;
Madhusoodan P
1
Funktioniert die EXE-Datei in einem Windows-System ohne JRE?
Arpit Agarwal
Nur um vollständig zu sein (habe es nicht selbst ausprobiert, da wir einen exe-Wrapper und kein Installationsprogramm benötigten): Installationspakete können auch mit javapackager erstellt werden (siehe docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ). . Um ein EXE- oder MSI-Installationsprogramm zu erstellen, muss zusätzlich Inno Setup oder WiX heruntergeladen und installiert werden.
Anre
Sein kann NSIS auch hilft; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Antworten:

324

Javapackager

Das Java Packager-Tool kompiliert, packt und bereitet Java- und JavaFX-Anwendungen für die Verteilung vor. Der Befehl javapackager ist die Befehlszeilenversion.

- Oracle-Dokumentation

Das javapackagerDienstprogramm wird mit dem JDK geliefert. Es kann -native exeunter anderem EXE-Dateien mit dem Flag generieren .

WinRun4J

WinRun4j ist ein Java-Launcher für Windows. Es ist eine Alternative zu javaw.exe und bietet die folgenden Vorteile:

  • Verwendet eine INI-Datei zum Angeben von Klassenpfad, Hauptklasse, VM-Argumenten und Programmargumenten.
  • Benutzerdefinierter ausführbarer Name, der im Task-Manager angezeigt wird.
  • Zusätzliche JVM-Argumente für eine flexiblere Speichernutzung.
  • Eingebauter Symbolersatz für benutzerdefiniertes Symbol.
  • [weitere Stichpunkte folgen]

- WinRun4Js Webseite

WinRun4J ist ein Open Source-Dienstprogramm. Es hat viele Funktionen.

packr

Packt Ihre JAR, Assets und eine JVM für die Verteilung unter Windows, Linux und Mac OS X und fügt eine native ausführbare Datei hinzu, damit sie wie eine native App erscheint. Packr ist am besten für GUI-Anwendungen geeignet.

- Packr README

packr ist ein weiteres Open Source Tool.

JSmooth

JSmooth ist ein Java Executable Wrapper. Es werden native Windows-Starter (Standard-EXE) für Ihre Java-Anwendungen erstellt. Dadurch wird die Java-Bereitstellung viel reibungsloser und benutzerfreundlicher, da jede installierte Java-VM selbst gefunden werden kann.

- JSmooths Website

JSmooth ist Open Source und verfügt über Funktionen, ist aber sehr alt. Die letzte Veröffentlichung war im Jahr 2007.

JexePack

JexePack ist ein Befehlszeilentool ( ideal für automatisiertes Scripting), mit dem Sie Ihre Java-Anwendung (Klassendateien) optional zusammen mit ihren Ressourcen (wie GIF / JPG / TXT / usw.) in eine einzige komprimierte 32-Bit-Windows-EXE-Datei packen können , das mit der Java-Laufzeitumgebung von Sun ausgeführt wird. Es werden sowohl Konsolen- als auch Fensteranwendungen unterstützt.

- JexePacks Website

JexePack ist Trialware. Für die Verwendung in der Produktion ist eine Zahlung erforderlich, und mit diesem Tool erstellte exe-Dateien zeigen "Erinnerungen" ohne Zahlung an. Auch die letzte Veröffentlichung war im Jahr 2013.

InstallAnywhere

Mit InstallAnywhere können Entwickler auf einfache Weise professionelle Installationssoftware für jede Plattform erstellen. Mit InstallAnywhere können Sie sich schnell an Branchenveränderungen anpassen, schneller auf den Markt kommen und ein ansprechendes Kundenerlebnis bieten. Informieren Sie sich vor dem Versand über die Sicherheitsanfälligkeit der OSS-Komponenten Ihres Projekts.

- InstallAnywhere-Website

InstallAnywhere ist ein kommerzielles / Enterprise-Paket, das Installationsprogramme für Java-basierte Programme generiert. Es ist wahrscheinlich in der Lage, EXE-Dateien zu erstellen.

Ausführbare JAR-Dateien

Alternativ zu EXE-Dateien können Sie eine JAR-Datei erstellen, die beim Doppelklicken automatisch ausgeführt wird, indem Sie dem JAR-Manifest einen Einstiegspunkt hinzufügen .


Für mehr Informationen

Eine hervorragende Informationsquelle zu diesem Thema ist der Artikel von Excelsior " Java in EXE konvertieren - Warum, wann, wann nicht und wie ".

Siehe auch den Begleitartikel " Best JAR to EXE Conversion Tools, kostenlos und kommerziell ".

Jay
quelle
Es ist besser, Eclipse und Jsmooth zu verwenden. Befolgen Sie diese Schritte regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J
Würde irgendetwas davon für meine Situation funktionieren? stackoverflow.com/questions/56674075/…
Revolverheld oder
Versuchen Sie Folgendes
CamelTM
112

Launch4j

Launch4j ist ein plattformübergreifendes Tool zum Umschließen von Java-Anwendungen, die als Jars in leichtgewichtigen nativen Windows-ausführbaren Dateien verteilt sind. Die ausführbare Datei kann so konfiguriert werden, dass nach einer bestimmten JRE-Version gesucht oder eine gebündelte Version verwendet wird. Außerdem können Laufzeitoptionen wie die anfängliche / maximale Heap-Größe festgelegt werden. Der Wrapper bietet außerdem eine bessere Benutzererfahrung durch ein Anwendungssymbol, einen nativen Begrüßungsbildschirm vor der JRE, einen benutzerdefinierten Prozessnamen und eine Java-Downloadseite, falls die entsprechende JRE nicht gefunden werden kann.

- Die Website von Launch4j

the.duckman
quelle
35

UPDATE: GCJ ist tot. Es wurde 2016 offiziell aus dem GCC-Projekt entfernt. Bereits zuvor wurde es sieben Jahre lang praktisch aufgegeben und war auf keinen Fall vollständig genug , um als praktikable alternative Java-Implementierung zu dienen.

Suchen Sie einen anderen Java AOT-Compiler.

GCJ: Der GNU Compiler für Java kann Java-Quellcode in nativen Maschinencode kompilieren, einschließlich ausführbarer Windows-Dateien.

Obwohl unter GCJ nicht alles in Java unterstützt wird, insbesondere die GUI-Komponenten (siehe Welche Java-APIs werden unterstützt? Wie vollständig ist die Unterstützung? Frage aus den FAQ ). Ich habe GCJ nicht viel benutzt, aber aufgrund der begrenzten Tests, die ich mit Konsolenanwendungen durchgeführt habe, scheint es in Ordnung zu sein.

Ein Nachteil der Verwendung von GCJ zum Erstellen einer eigenständigen ausführbaren Datei besteht darin, dass die Größe der resultierenden EXE-Datei sehr groß sein kann. Einmal habe ich eine einfache Konsolenanwendung in GCJ kompiliert und das Ergebnis war eine ausführbare Datei mit etwa 1 MB. (Es kann Wege geben, die mir nicht bekannt sind. Eine andere Option wären ausführbare Komprimierungsprogramme.)

In Bezug auf Open Source-Installationsprogramme ist das skriptfähige Nullsoft -Installationssystem ein skriptfähiges Installationsprogramm. Wenn Sie neugierig sind, gibt es vom Benutzer bereitgestellte Beispiele, wie Sie das Vorhandensein einer JRE erkennen und automatisch installieren können, wenn die erforderliche JRE nicht installiert ist. (Nur um Sie wissen zu lassen, ich habe NSIS noch nie verwendet.)

Weitere Informationen zur Verwendung von NSIS für die Installation von Java-Anwendungen finden Sie in meiner Antwort auf die Frage " Wie können Java-Anwendungen am besten verteilt werden? ".

Coobird
quelle
2
Das Projekt ist tatsächlich tot, wie ich sehen kann. Keine Nachrichten auf der Hauptseite
Vladislav Rastrusny
Die GNU-Java-Entwicklung wurde weitgehend auf OpenJDK umgestellt, da die Nicht-Oracle-Quellen keinen Zugriff auf das TCK zur Validierung erhalten konnten.
Thorbjørn Ravn Andersen
25

Sie können eine Batchdatei mit dem folgenden Code erstellen:

start javaw -jar JarFile.jar

und konvertieren Sie die .bat in eine .exe mit einem beliebigen .bat in .exe Konverter.

MultiplyByZer0
quelle
2
Ein guter Wrapper bringt entweder eine JRE mit oder installiert sie bei Bedarf und behandelt Fehlersituationen.
Thorbjørn Ravn Andersen
16

Wir verwenden Install4J , um Installationsprogramme für Windows- oder Unix-Umgebungen zu erstellen.

Es ist leicht anpassbar bis zu dem Punkt, an dem Sie Skripte für spezielle Aktionen schreiben möchten, die mit Standarddialogen nicht ausgeführt werden können. Obwohl wir damit Windows-Dienste einrichten, verwenden wir nur Standardkomponenten.

  • Installer + Launcher
  • Windows oder Unix
  • Skriptfähig in Java
  • Ameisenaufgabe
  • viele anpassbare Standard-Panels und Aktionen
  • Enthält optional eine JRE oder lädt sie herunter
  • kann auch Windows-Dienste starten
  • mehrere Sprachen

Ich denke, Launch4J ist von der gleichen Firma (nur der Launcher - kein Installer).

PS: Leider werde ich für diese Bestätigung nicht bezahlt. Ich mag dieses Tool einfach.

Stroboskop
quelle
15

Der neueste Java Web Start wurde verbessert, um einen guten Offline-Betrieb sowie eine "lokale Installation" zu ermöglichen. Es lohnt sich, einen Blick darauf zu werfen.

EDIT 2018: Java Web Start wird nicht mehr mit den neuesten JDKs gebündelt. Oracle drängt stattdessen auf ein Modell "Stellen Sie Ihre App lokal mit einem beiliegenden JRE bereit".

Thorbjørn Ravn Andersen
quelle
Anscheinend hat JWS die Sicherheit so stark verschärft, dass es viel mehr Aufwand erfordert als zuvor, um zum Laufen zu kommen. Es könnte jedoch für Installer immer noch nützlich sein.
Thorbjørn Ravn Andersen
9

Wenn Sie Ihre gesamte Anwendung in nativen Code konvertieren müssen, dh eine EXE plus DLLs, gibt es ExcelsiorJET . Ich fand es gut und bot eine Alternative zum Bündeln einer JRE.

mdma
quelle
Wirklich teuer.
Mordechai
9

meiner bescheidenen Meinung nach JSmooth scheint einen ziemlich guten Job zu machen.

jussij
quelle
6

Ich würde sagen, launch4j ist das beste Tool zum Konvertieren eines Java-Quellcodes (.java) in eine EXE-Datei. Sie können sogar ein JRE damit zur Verteilung bündeln und die Exe kann sogar symbolisiert werden. Obwohl die Größe der Anwendung zunimmt, wird sichergestellt, dass die Anwendung auch dann einwandfrei funktioniert, wenn auf dem Benutzer kein JRE installiert ist. Außerdem wird sichergestellt, dass Sie das für Ihre App erforderliche spezifische JRE bereitstellen können, ohne dass der Benutzer es separat installieren muss. Leider verliert Java seine Bedeutung. Die Unterstützung für mehrere Plattformen wird völlig ignoriert und die endgültige App wird nur für Windows unterstützt. Dies ist jedoch keine große Sache, wenn Sie nur Windows-Benutzer bedienen.

Pratanu Mandal
quelle
5

Sie können Janel verwenden . Letzteres funktioniert als Application Launcher oder Service Launcher (verfügbar ab 4.x).

L. BIZE
quelle
4

Alternativ können Sie einen Java-zu-C-Übersetzer (z. B. JCGO ) verwenden und die generierten C-Dateien in eine native Binärdatei (.exe) für die Zielplattform kompilieren.

Ivan Maidanski
quelle
2
Ich bin sehr ungläubig über die Wirksamkeit dieser Methode. Ich müsste es sehen, um es zu glauben (denken Sie an die Tatsache, dass der meiste Java-Code API-Aufrufe an die JRE sind und all das auf C nicht vorhanden ist, ungeachtet der Unterschiede in der Funktionsweise der Sprache).
Camilo Martin
3

Mir kann vergeben werden, dass ich gegen die Konvertierung eines Java-Programms in eine EXE-Anwendung bin, und ich habe meine Gründe. Das wichtigste ist, dass ein Java-Programm aus vielen IDEs in eine JAR-Datei kompiliert werden kann. Wenn das Programm im JAR-Format vorliegt, kann es auf mehreren Plattformen ausgeführt werden, im Gegensatz zu EXE, das nur in einer sehr eingeschränkten Umgebung ausgeführt wird. Ich bin für die Idee, dass Java-Programme nicht in Exe konvertiert werden sollten, es sei denn, es ist sehr notwendig. Man kann immer .bat-Dateien schreiben, die das Java-Programm ausführen, während es eine JAR-Datei ist.

Wenn es wirklich notwendig ist, es in exe zu konvertieren, erledigt der Jar2Exe-Konverter dies stillschweigend und man kann auch Bibliotheken anhängen, die zusammen mit der Hauptanwendung kompiliert wurden.

ErrorNotFoundException
quelle
Die Sache ist, Java ist die Portabilität, aber viele Leute brauchen nur eine grundlegende Windows-Exe. Persönlich liebe ich das Konzept von Java ... möchte aber etwas verteilen, das meine Benutzer ausführen können, ohne eine JRE herunterladen zu müssen.
Balmipour