Importance de l’attribut manifeste principal dans un fichier JAR à exécution automatique

1. Vue d’ensemble

Chaque classe Java exécutable doit contenir une méthode main . En termes simples, cette méthode est le point de départ d’une application.

Pour exécuter notre méthode principale à partir d’un fichier JAR auto-exécutable, nous devons créer un fichier manifeste approprié et l’intégrer avec notre code. Ce fichier manifeste doit avoir un attribut manifeste principal qui définit le chemin d’accès à la classe contenant notre méthode principale.

Dans ce didacticiel, nous allons montrer comment empaqueter une classe Java simple en tant que JAR à exécution automatique et démontrer l’importance d’un attribut manifeste principal pour une exécution réussie.

2. Exécution d’un fichier JAR sans l’attribut Manifest principal

Pour être plus pratique, nous allons montrer un exemple d’exécution infructueuse sans l’attribut manifeste approprié.

Écrivons une classe Java simple avec une méthode main:

public class AppExample {
    public static void main(String[]args){
        System.out.println("AppExample executed!");
    }
}

Pour compresser notre exemple de classe dans une archive JAR, nous devons accéder au shell de notre système d’exploitation et le compiler:

javac -d . AppExample.java

Ensuite, nous pouvons l’emballer dans un JAR:

jar cvf example.jar com/baeldung/manifest/AppExample.class

Notre exemple.jar contiendra un fichier manifeste par défaut. Nous pouvons maintenant essayer d’exécuter le JAR:

java -jar example.jar

L’exécution échouera avec une erreur:

no main manifest attribute, in example.jar

3. Exécution d’un fichier JAR avec l’attribut de manifeste principal

Comme nous l’avons vu, JVM n’a pas pu trouver notre principal attribut manifeste. De ce fait, notre classe principale ne pouvait pas contenir notre méthode principale.

Incluons un attribut manifeste approprié dans le fichier JAR avec notre code. Nous devrons créer un fichier MANIFEST.MF contenant une seule ligne:

Main-Class: com.baeldung.manifest.AppExample

Notre manifeste contient maintenant le chemin de classe vers notre AppExample.class compilé. Comme nous avons déjà compilé notre exemple de classe, il n’est pas nécessaire de le refaire.

Nous allons juste emballer avec notre fichier manifeste:

jar cvmf MANIFEST.MF example.jar com/baeldung/manifest/AppExample.class

Cette fois, JAR s’exécute comme prévu et génère:

AppExample executed!

4. Conclusion

Dans cet article rapide, nous avons montré comment compacter une classe Java simple en tant que JAR à exécution automatique, et nous avons montré l’importance d’un attribut manifeste principal dans deux exemples simples.

Le code source complet de l’exemple est disponible à l’adresse over sur GitHub . Ceci est un projet basé sur Maven, il peut donc être importé et utilisé tel quel.