Mis à jour le 30/10/2013
  • Facile
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction du cours

Vous êtes un débutant en Java et aimeriez montrer à vos amis vos progrès en leur distribuant vos programmes, seulement vous aimeriez qu'ils puissent les lancer comme la plupart des programmes existants (sous Windows) : par un double-clic sur un fichier.
Eh bien vous êtes ici au bon endroit car je vais vous apprendre à créer des archives JAR auto-exécutables (c'est-à-dire qui se lanceront par un simple double-clic).

Je tiens juste à préciser qu'il existe d'autres techniques permettant de créer des fichiers JAR que celle que je vais vous apprendre (en utilisant un IDE comme Eclipse ou tout simplement un programme conçu dans ce but). Cependant, le faire manuellement vous permettra de mieux comprendre de quoi il retourne et est bien plus gratifiant que de passer par un logiciel tiers. :D

Trêve de bla-bla, place aux explications !

Qu'est-ce qu'une archive JAR exécutable?

Les fichiers JAR (pour Java ARchive) sont des fichiers archives qui permettent d'archiver (étonnant hein ? :p ) des fichiers dans un format spécifique à Java, et donc portable. Les fichiers JAR ne sont en fait rien d'autre que des fichiers zip renommés (essayez d'ouvrir un fichier JAR avec Winzip ou Winrar, vous verrez que cela fonctionne). L'intérêt des archives JAR est aussi qu'elles peuvent être auto-exécutables, faisant office de .exe pour vos programmes Java sous Windows par exemple. Dans ce tutoriel, je vous expliquerai donc comment créer des fichiers JAR auto-exécutables, créer de simples fichiers d'archive n'étant pas spécialement compliqué. La différence entre une archive JAR basique et une archive JAR exécutable et que lors d'un double-clic sur cette dernière, la JVM ira automatiquement chercher la classe principale de votre programme pour l'exécuter.

Pour une description plus précise, voir l'article dédié sur Wikipédia (d'où provient d'ailleurs l'icône de ce tutoriel).

Organisation

Tout d'abord, il va vous falloir organiser votre espace de travail. Soit un dossier principal qui contiendra à la fin de ce tutoriel :

  • votre fichier .jar ;

  • un sous-dossier contenant les ressources dont a besoin votre programme (images etc.).

Afin de mieux vous y retrouver, je vous conseille de créer un sous-dossier contenant les éventuelles ressources dont a besoin votre programme.
Il se peut aussi que votre programme ait besoin d'accéder à d'autres fichiers .jar (librairies externes, Look&Feel...). Afin que les futurs utilisateurs de votre programme n'aient pas à réfléchir pour savoir sur quel fichier .jar cliquer, je vous conseille de les mettre eux aussi dans un sous-dossier (soit le même que celui accueillant les ressources, soit un autre, cela dépend de la façon dont vous voulez vous organiser).
Ici je prendrai comme exemple l'utilisation d'un Look&Feel supplémentaire : le Look&FeelLiquid.
Placez ensuite une copie de vos fichiers .class à la racine du dossier.

Dans la suite de ce tutoriel, je considérerai donc que nous avons un répertoire racine nommé "Projet", et que ce répertoire contient un sous-répertoire "Archives" ainsi qu'un sous-répertoire "Ressources" .

Le fichier MANIFEST

Ensuite, il vous faut créer un fichier nommé MANIFEST.MF (en fait ce fichier peut prendre n'importe quel nom mais MANIFEST.MF est le nom recommandé). Ce fichier est en fait un simple fichier texte contenant diverses informations comme :

  • le nom de la classe principale (contenant la méthode main) ;

  • le CLASSPATH (chemin) menant à d'éventuelles archives.

Par convention, ce fichier est placé dans un sous-dossier META-INF, néanmoins vous pouvez le placer à la racine de votre dossier "Projet" sans aucun problème. Ici le fichier MANIFEST.MF est donc à la racine de notre dossier "Projet" .
Voici un exemple de fichier MANIFEST.MF (note : Les commentaires sont ici utilisés dans un souci de simplicité mais n'en mettez surtout pas dans votre fichier MANIFEST !) :

Main-Class: ClassePrincipale
Class-Path: \Archives\liquidlnf.jar // Le fichier JAR contenant le Look&Feel Liquid

Votre fichier MANIFEST doit obligatoirement se terminer par un retour chariot (retour à la ligne) !
Faites aussi attention à ce qu'il n'y ait aucune espace à la fin de chaque ligne.

Créer l'archive JAR

Maintenant que tout est prêt, nous pouvons enfin passer à la création de notre fichier JAR (ouf !).
Pour ce faire, il va falloir utiliser la console (j'en entends déjà râler au fond :D ) !
J'imagine que les utilisateurs de Linux savent s'en servir à merveille (la console étant très utilisée apparemment sur cet OS).
Si vous êtes un utilisateur de Windows et que vous ne savez pas vous servir de la console (appelée MS DOS sous Windows) je vous conseille ce tutoriel de Gnogno expliquant son fonctionnement. Pour notre affaire, seule la partie "Navigation" vous sera utile. ;)

Je considère que vous vous trouvez maintenant dans votre dossier "Projet" (à partir de la console bien entendu).
Voici maintenant le schéma de la commande qu'il va vous falloir entrer dans la console :

jar cvmf MANIFEST.MF Programme.jar *.class

Explication :jar est tout simplement la commande utilisée par Java pour gérer les fichiers JAR.
La suite de lettres "cvmf" :

  • 'c' : veut dire que vous voulez créer un fichier JAR (il faut en effet le préciser car la commande jar peut aussi être utilisée pour ouvrir un fichier .jar par exemple).

  • 'v' : indique que vous voulez afficher les détails sur la création du JAR (mode "verbeux").

  • 'm' : indique que vous voulez utiliser votre propre fichier MANIFEST.MF (ce qui n'est pas forcément utile dans le cas d'une archive non-exécutable).

  • 'f' : indique que le résultat sera un fichier (si vous omettez de l'indiquer, le résultat s'affichera dans la console ce qui ne servirait à rien).

La suite indique le nom du fichier MANIFEST (ici MANIFEST.MF), le nom que vous voulez donner au fichier JAR qui sera créé (ici Programme.jar) et enfin les fichiers que vous voulez inclure dans l'archive (ici l'utilisation de l'astérisque permet de dire que nous voulons ajouter tous les fichiers .class contenus dans le dossier courant).

Une fois ceci fait, vous devriez avoir un message de ce style dans la console :

manifest ajouté
ajout : Class1.class (entrée = 541) (sortie = 382) (29% compressés)
ajout : Class2.class (entrée = 4549) (sortie = 2531) (44% compressés)

Si ce n'est pas le cas, vérifiez que vous n'avez pas fait d'erreur dans le fichier MANIFEST.MF (n'oubliez pas le saut de ligne à la fin du fichier !) ou en tapant la commande dans la console.

Rendez-vous maintenant dans votre dossier "Projet" : un fichier Programme.jar a bien été créé (encore heureux ^^ ) ! Vous pouvez maintenant supprimer les fichiers .class de votre dossier, ils ne vous servent plus à rien.
Pour lancer votre programme, un simple double-clic suffit.

Et voilà, c'est fini. J'espère que ce tuto vous a plu et vous a permis de bien comprendre la création de fichiers JAR. :)

Pour aller plus loin

Comme je l'ai dit dans l'introduction de ce tutoriel, il existe d'autres manières de créer des archives JAR. Voici quelques liens qui vous éclaireront sur le sujet :

Remerciement

Un grand merci à SuperMat pour ses conseils et sa relecture du tutoriel !

Pour toute question ou suggestion au sujet de ce tuto, ma boîte à MP est ouverte !

Exemple de certificat de réussite
Exemple de certificat de réussite