Créer un .exe pour un programme Java

KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 - 19 mai 2022 à 20:04
De nombreuses questions sur le forum portent sur la transformation de programmes Java en .exe parfois en faisant référence à des outils tiers, payant et/ou très anciens.
Or Java fournit déjà les outils nécessaires dans le JDK pour permettre de compiler l'application, la packager en jar ou créer un programme natif (exe/msi pour Windows, deb/rpm pour Linux, pkg/app/dmg pour Mac).

Attention : au cours des dernières années de nombreux outils se sont succédés au fil des évolutions de la JVM (javafxpackager, javapackager, jpackage, etc.) et ils ne fonctionnent pas tous exactement de la même manière.
Ici nous présenterons le dernier outil en date, jpackage, qui est disponible depuis Java 14 (mars 2020).

Remarque : il est nécessaire d'être sur Windows pour construire une image Windows (idem pour Linux et Mac) et certaines options nécessitent d'installer des logiciels en plus (selon le système).

Exemple

On considère le code suivant, enregistré dans le fichier C:\Workspace\helloworld\HelloWorld.java
package helloworld;
import javax.swing.JOptionPane;

public class HelloWorld {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Hello World!");
    }
}

En ligne de commandes, sous réserve que le JDK soit accessible depuis le PATH, on peut faire :
C:\Workspace> javac helloworld\HelloWorld.java
C:\Workspace> mkdir target
C:\Workspace> jar cf target/hello.jar helloworld\HelloWorld.class
C:\Workspace> jpackage --type app-image --name hello --input target --main-jar hello.jar --main-class helloworld.HelloWorld

Dans le dossier C:\Workspace\hello qui est créé, il y a un programme hello.exe qui exécute notre code Java.
Remarque : il est nécessaire que le programme hello.exe reste à côté des répertoires app et runtime également créés et qui contiennent respectivement une copie du jar et une copie de la JVM.

Pour aller plus loin

Il existe de nombreuses options à cet outil pour personnaliser l'installation, certaines étant spécifiques au système cible (Windows, Linux ou Max), tout est documenté ici :