Supposons que votre projet soit organisé suivant la hierarchie
suivante, dans trois paquetages dont la racine est située en dessous
du répertoire projet
:
projet/paquet1/Util.java /Util.class /paquet2/Personne.java /Personne.class /paquet3/Principal.java /Principal.class /Repertoire.java /Repertoire.class
On suppose ici que Principal
est la classe prinicpale
qu'il faut appeler pour exécuter le programme (elle crée un répertoire
et des personnes en utilisant des utilitaires).
Afin de créer une archive de ce projet, on peut utiliser des outils
comme WinZip
(sous Windows, qui crée une archive ZIP) ou
comme la commande tar
Unix qui permet de créer une
archive compressée. Par exemple, depuis le répertoire parent de
projet
, la commande tar
suivante
% tar zcvf projetToto28032003.tgz projet/* projet/paquet1/ projet/paquet1/Util.class projet/paquet1/Util.java projet/paquet2/ projet/paquet2/Personne.class projet/paquet2/Personne.java projet/paquet3/ projet/paquet3/Repertoire.class projet/paquet3/Repertoire.java projet/paquet3/Principal.class projet/paquet3/Principal.javacrée un fichier de nom
projetToto28032003.tgz
qui contient toute l'arborescence listée ci-dessus.
Si un utilisateur récupère un tel fichier, afin de désarchiver/décompresser une telle archive, il pourra utiliser la commande
% tar zxvf projetToto28032003.tgzTaper
"man tar"
dans une fenêtre de commande Unix pour
obtenir le manuel complet d'utilisation de tar
.
Une autre manière, permettant d'être indépendant de la plateforme,
consiste à utiliser la commande "jar"
qui utilise Java
pour créer une Java ARchive. L'usage de cette commande est
précisément décrite dans la documentation dont vous disposez sur vos
machines, à l'URL /docs/guide/jar/index.html
sou le
répertoire de base d'installation de Java. Brièvement, voici comment
s'utilise cette commande pour créer une archive:
jar cvf projetToto28032003.jar projet/* manifest ajouté ajout : projet/paquet1/(entrée = 0) (sortie = 0)(0% stocké) ajout : projet/paquet1/Util.class(entrée = 5471) (sortie = 4360)(20% compressés) ajout : projet/paquet1/Util.java(entrée = 118) (sortie = 99)(16% compressés) ajout : projet/paquet2/(entrée = 0) (sortie = 0)(0% stocké) ajout : projet/paquet2/Personne.class(entrée = 722) (sortie = 418)(42% compressés) ajout : projet/paquet2/Personne.java(entrée = 344) (sortie = 177)(48% compressés) ajout : projet/paquet3/(entrée = 0) (sortie = 0)(0% stocké) ajout : projet/paquet3/Repertoire.class(entrée = 636) (sortie = 402)(36% compressés) ajout : projet/paquet3/Repertoire.java(entrée = 511) (sortie = 274)(46% compressés) ajout : projet/paquet3/Principal.class(entrée = 953) (sortie = 599)(37% compressés) ajout : projet/paquet3/Principal.java(entrée = 475) (sortie = 278)(41% compressés)
L'extraction de l'arborescence de cette archive projetToto28032003.jar
se fait par la
commande:
% jar xvf projetToto28032003.jar
Tous les fichiers placés dans cette archive sont indispensables pour
pouvoir compiler ou modifier l'application. En revanche, seuls les
fichiers d'extension ".class"
sont requis pour
l'exécution (le bytecode des classes).
Il est possible de créer un fichier, dit jar exécutable qui
peut ne contenir que les fichiers de bytecode et qui précise quelle
classe doit être appelée en premier en cas d'exécution. Il suffit de
créer un fichier monManifest
contenant la simple ligne
suivante sous le répertoire projet
:
Main-Class: paquet3.Principalet puis créer l'archive exécutable, depuis le répertoire projet, par:
projet% jar cvmf monManifest archiveExecutable.jar paquet*/*.class
Vous pourrez alors vérifier qu'avec ce seul fichier archiveExcecutable.jar
,
il est possible d'exécuter l'application grâce à la commande:
% java -jar archiveExcecutable.jar