Wie kann ich eine Java-Quelldatei (*.java) oder eine Klassendatei (*.class) in eine .exe-Datei umwandeln?
Ich brauche auch ein Installationsprogramm für mein Programm.
Wie kann ich eine Java-Quelldatei (*.java) oder eine Klassendatei (*.class) in eine .exe-Datei umwandeln?
Ich brauche auch ein Installationsprogramm für mein Programm.
Das Neueste Java Web Start wurde verbessert, um einen guten Offline-Betrieb und 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 setzt stattdessen auf ein Modell, bei dem Sie Ihre Anwendung lokal mit einer beigefügten JRE bereitstellen.
Ab JDK14, jpackage Ersetzt javapackager
in der Antwort von @Jay erwähnt. Die Windows-Version erfordert Wix 3.0, und es ist ziemlich einfach, eine Java-Anwendung zu nehmen und ein Installationsprogramm zu erstellen, das einen EXE-Launcher bereitstellt.
Es kann auch verwendet werden mit jlink um ein reduziertes Java-Laufzeit-Image zu erstellen, das mit dem Installationsprogramm gebündelt wird und nur die zur Unterstützung Ihrer Anwendung erforderlichen Module enthält. Die jlink
Schritt wird auch implizit von jpackage ausgeführt, wenn keine Laufzeit angegeben ist, aber ich ziehe es vor, das JRE-Image separat zu erstellen, da es sich nur ändert, wenn Sie das JDK aktualisieren oder neue Modulabhängigkeiten zu Ihrem Projekt hinzufügen.
Beispiel main für eine Java-Klasse:
package exe;
public class Main {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]="+args[i]);
}
}
}
Hier sind Beispielschritte für den Build unter Windows - natürlich müssen Sie Ihre lokale Build-Umgebung (Maven / ant / etc) einrichten, um dies zu reproduzieren:
mkdir jpackage.input\jars tmp
javac -d tmp src\exe\Main.java
pushd tmp && jar cvf ..\jpackage.input\jars\myapp.jar . && popd
Prüfen Sie, ob er läuft:
java -cp jpackage.input\jars\myapp.jar exe.Main X Y Z
Erstellen Sie ein Laufzeit-Image mit jlink für die von Ihrer Anwendung verwendeten Module:
set jlink.modules=java.base
jlink --add-modules %jlink.modules% --strip-debug --no-man-pages --no-header-files --compress=1 --output jpackage.jre
Falls die oben genannten Module fehlen, sollten Sie überprüfen, ob das jlink JRE-Laufzeit-Image Ihre Anwendung ausführen kann:
jpackage.jre\bin\java -cp jpackage.input\jars\myapp.jar exe.Main X Y Z
Verwenden Sie jpackage, um ein Installationsprogramm zu erstellen, mit app Version basierend auf Datum+Stunde (dies erspart die Deinstallation bei jeder Neuinstallation) und zum Ausdrucken aller Systemeigenschaften - entfernen Sie den Parameter "-XshowSettings:properties" nach dem Testen:
set appver=%date:~6,2%.%date:~3,2%.%date:~0,2%%time:~0,2%
jpackage --win-console --input jpackage.input --runtime-image jpackage.jre --app-version %appver% --type exe --name "MyApp" --dest jpackage.dest --java-options "-XshowSettings:properties" --main-jar jars\myapp.jar --main-class exe.Main
Führen Sie das Installationsprogramm aus:
jpackage.dest\MyApp-%appver%.exe
Testen Sie die Anwendung:
"C:\Program Files\MyApp\MyApp.exe" ONE 2 THREE
... Prints system properties ...
args[0]=ONE
args[1]=2
args[2]=THREE
Wenn Sie Ihre gesamte Anwendung in nativen Code konvertieren müssen, d. h. eine EXE plus DLLs, gibt es ExcelsiorJET . Ich fand, dass es gut funktioniert und eine Alternative zur Bündelung einer JRE darstellt.
EDIT: Dieser Beitrag stammt aus dem Jahr 2010 - das Produkt ist nicht mehr erhältlich.
Ich würde sagen, launch4j ist das beste Werkzeug für die Konvertierung eines Java-Quellcodes (.java) in eine .exe-Datei. Sie können sogar eine JRE-Datei für die Verteilung mit einbinden und die Exe-Datei kann sogar mit Icons versehen werden. Obwohl die Größe der Anwendung zunimmt, stellt es sicher, dass die Anwendung perfekt funktioniert, auch wenn der Benutzer keine JRE installiert hat. Es stellt auch sicher, dass Sie in der Lage sind, das für Ihre Anwendung benötigte jre bereitzustellen, ohne dass der Benutzer es separat installieren muss. Aber leider verliert Java seine Bedeutung. Seine Multiplattform-Unterstützung wird völlig ignoriert und die fertige Anwendung wird nur für Windows unterstützt. Das ist aber nicht weiter schlimm, wenn Sie sich nur an Windows-Benutzer wenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.