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.
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 .
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.
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 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.
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.
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.
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.)
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.
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.
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".
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.
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.
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.
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.
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
2
Sie können jar mit jar2exe in exe konvertieren . Sie müssen jedoch die Software kaufen. Wenn Sie eine Open-Source-Software benötigen, würde ich JSmooth empfehlen .
Antworten:
Javapackager
Das
javapackager
Dienstprogramm wird mit dem JDK geliefert. Es kann-native exe
unter anderem EXE-Dateien mit dem Flag generieren .WinRun4J
WinRun4J ist ein Open Source-Dienstprogramm. Es hat viele Funktionen.
packr
packr ist ein weiteres Open Source Tool.
JSmooth
JSmooth ist Open Source und verfügt über Funktionen, ist aber sehr alt. Die letzte Veröffentlichung war im Jahr 2007.
JexePack
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
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 ".
quelle
Launch4j
quelle
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? ".
quelle
Sie können eine Batchdatei mit dem folgenden Code erstellen:
und konvertieren Sie die .bat in eine .exe mit einem beliebigen .bat in .exe Konverter.
quelle
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.
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.
quelle
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".
quelle
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.
quelle
meiner bescheidenen Meinung nach JSmooth scheint einen ziemlich guten Job zu machen.
quelle
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.
quelle
Sie können Janel verwenden . Letzteres funktioniert als Application Launcher oder Service Launcher (verfügbar ab 4.x).
quelle
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.
quelle
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.
quelle
Sie können jar mit jar2exe in exe konvertieren . Sie müssen jedoch die Software kaufen. Wenn Sie eine Open-Source-Software benötigen, würde ich JSmooth empfehlen .
quelle