Skip Navigation Links
Accueil
Java Standard EditionExpand Java Standard Edition
Java EE 5Expand Java EE 5
Visual Basic .Net 2005Expand Visual Basic .Net 2005
Visual C++ .Net 2005Expand Visual C++ .Net 2005
Visual C# .Net 2005Expand Visual C# .Net 2005
Cours ASP .Net 2.0Expand Cours ASP .Net 2.0
PostgresqlExpand Postgresql
LinuxExpand Linux
Visual Studio 2008Expand Visual Studio 2008
ASP 3.0 ClassiqueExpand ASP 3.0 Classique
Cours Javascript - DOM - DHTMLExpand Cours Javascript - DOM - DHTML
Cours AjaxExpand Cours Ajax
VBAExpand VBA
AssembleurExpand Assembleur
PerlExpand Perl
MembresExpand Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Accueil > Java Standard Edition > Les archives Jar
____________________________________________________________________________________________________
Connexion

Les fichiers jar

Sommaire :

I) Définition
II) Exemple
III) La commande JAR
IV) Le fichier Manifest
V) Le classpath pour les jar
VI) Remarques
VII) Téléchargements

I) Définition

JAR = Java ARchive. C'est un format de fichier utilisé pour déployer facilement une application java. Ainsi on aura un seul fichier .jar, qui contiendra un ensemble de fichiers( classes compilées, mais aussi ressources comme images et sons, ou encore les fichiers de paramétrages, etc; on peut mettre n'importe quel type de fichiers). L'arborescence des répertoires est gardée dans le .jar .

C'est le format ZIP qui est utilisé par les jar. Le contenu est compressé ou non.
Il n'est pas nécessaire de décompresser le fichier jar pour pouvoir l'exécuter.
La JVM sait aller y chercher directement ce qu'elle veut dans le jar.

Comme c'est le format zip, on peut utiliser WinZip pour ouvrir l'archive. Par contre on ne l'utilise pas pour créer un jar.

Le contenu classique dans un jar, est le contenu du répertoire bin du projet Eclipse, c'est à dire toute l'arborescence contenu dans le répertoire bin, ainsi que les fichiers .class .

II) Exemple

Pour le projet de test des classes abstraites, on trouverait:

rep animal -> Animal.class
                    Chien.class
                    Chat.class

rep main -> Main.class

META-INF -> MANIFEST.MF (fichier Manifest). Par défaut son contenu est vide.

III) La commande JAR

La commande jar permet de créer une archive JAR.

Par exemple, on se place dans le répertoire bin du projet eclipse, et on fait:

jar cf monJAR.jar *.*

Si, au lieu de *.*, on avait écrit le cheminabsolu\*.*, la commande jar aurait mis dans l'archive toute l'arborescence, depuis la racine du disque dur.
C'est pour cela qu'on va d'abord dans le répertoire, puis qu'on écrit *.* .

c => on crée une nouvelle archive
f => on indique le nom de l'archive
0 => ne pas compresser (vous pouvez essayer pour un même contenu: les tailles du jar sont alors différentes).
m => on spécifie un fichier manifest à utiliser
v => pour afficher des explications détaillées de ce qui se passe

IV) Le fichier Manifest

C'est un fichier qui contient des informations sur le .jar . Par défaut ce fichier est vide, et à pour version 1.0

Exemple de manifest créé par défaut:
"Manifest-Version: 1.0
Created-By: 1.6.0_06 (Sun Microsystems Inc.)"

Exemple de fichier manifest créé par nous:
"
Manifest-Version: 1.0
Created-By: Sabri Koffler
Main-Class: main.Main
"

Ne pas oublier de passer à la ligne après la dernière ligne, sinon la dernière ligne sera ignorée.

Le "Main-Class: main.Main" sert à indiquer quelle classe contient le main.

On crée alors l'archive par (en se plaçant dans le bin\):
jar cfm testExecut.jar ../MONMANIFEST.txt *.*
en supposant que le fichier MONMANIFEST.txt est dans le répertoire père de bin\ (c'est à dire celui du projet).
Le fichier manifest qui sera dans l'archive, aura toujours pour nom MANIFEST.MF

=> cela permet de créer un jar exécutable, qui sera lancé par:

java -jar testExecut.jar

V) Le classpath pour les jar

Il est nécessaire de rajouter le jar dans le classpath afin que la jvm connaisse les classes et packages dont il parle.
Pour cela, mettre dans le classpath uniquement le répertoire qui contient le jar ne suffit pas.

on peut alors faire, ici:

java main.Main
La classe Main est connue, bien qu'on ait indiqué seulement le jar dans le classpath.

* Par contre, pour pouvoir faire directement, de n'importe où
java -jar testExecut.jar
si on rajoute le jar dans le classpath, cela n'est pas d'utilité. Ni même en rajoutant le chemin du répertoire du jar. En effet, le classpath sert pour que la jvm puisse retrouver, à partir d'un nom de classe, le fichier .class correspondant. Or ce n'est pas la problématique dans le cas de l'exécution d'un jar exécutable.

VI) Remarques

On ne peut pas inclure d'archive jar, dans un jar.

VII) Téléchargements

Archive Zip V1-0, contenant MONMANIFEST.txt et testExecut.jar


RETOUR HAUT