Paquetages, archives et CLASSPATH

Transcription

Paquetages, archives et CLASSPATH
N7 1IMA
TP 3
O UTILS POUR LE G ÉNIE L OGICIEL
10/05/2010, 12/05/2010 (STP 3)
Paquetages, archives et CLASSPATH
Objectifs :
– Comprendre les paquetages
– Savoir utiliser les archives (jar)
– Connaître la notion de classpath
1 Paquetages en Java
Les paquetages permettent de structurer les classes (et interfaces) d’une application. En Java,
un paquetage correspond à un répertoire. Nous allons utiliser les paquetages pour restructurer
l’application sur l’éditeur de schémas mathématiques.
Nous partons des fichiers sources de l’application.
Exercice 1 : Restructurer l’application
On souhaite construire un paquetage appelé geometrie dans lequel seront placées les classes
Point, Segment et Cercle.
1.1 Construire le répertoire geometrie, y déplacer les fichiers des classes sus-listées, modifier
ces classes pour indiquer qu’elles appartiennent au paquetage geometrie.
1.2 Modifier les deux programmes de test en les laissant dans le paquetage anonyme.
1.3 Compiler les programmes de test.
1.4 Exécuter les programmes de test.
Exercice 2 : Mettre le programme principal dans un paquetage
En fait, les programmes de test devraient être dans le même paquetage que les classes testées.
2.1 Déplacer les programmes de test dans le paquetage geometrie.
2.2 Recompiler et exécuter les programmes de test.
2 Fichiers d’archive (jar)
La commande jar permet de regrouper dans un même fichier, dit fichier d’archive et possédant l’extension .jar, l’ensemble des fichiers de classes java compilées (.class) ainsi qu’éventuellement des fichiers correspondant à des ressources.
Les options de la commande jar sont similaires à celles de la commande tar d’Unix à savoir :
TP 3
1/4
O UTILS
POUR LE
G ÉNIE L OGICIEL
Paquetages, archives et CLASSPATH
Option Description
c
Créer une nouvelle archive contenant l’ensemble des fichiers passés en
argument de jar (le contenu des répertoires est inclu).
t
Afficher le contenu d’une archive jar
x
Extraire les fichiers de l’archive en argument de la commande (tous les
fichiers de l’archive jar si pas d’argument)
f
Spécifier le nom du fichier correspondant à l’archive. C’est l’argument
suivant sur la ligne de commande.
v
Afficher des informations détaillées sur les opérations effectuées
m
Modifier le « manifeste » du fichier jar. Les modifications sont contenues dans le fichier dont le nom est donné dans l’argument suivant.
0
Supprimer la compression lors de l’archivage
Les questions qui suivent ont pour objet de créer une archive exécutable à partir de l’application « éditeur de schémas mathématiques » développée précédemment.
Exercice 3 : Créer une archive
Pour créer un fichier d’archive contenant tous les fichiers compilés des classes Java, il suffit de
faire :
jar -cvf geometrie.jar geometrie/*.class afficheur/*.class
L’archive se nomme geometrie.jar. Elle contient tous les fichiers .class des répertoires geometrie
et afficheur.
Exercice 4 : Consulter le contenu d’une archive
Il suffit de faire :
jar -tf geometrie.jar
jar -tvf geometrie.jar
Le contenu de l’archive est listé à l’écran avec seulement le nom des fichiers contenus dans le
premier cas (-tf) ou en mode long (-tvf).
Remarque : On peut noter que l’archive contient un fichier que nous n’avions pas introduit
explicitement. C’est le fichier META-INF/MANIFEST.MF, appelé « manifeste », qui contient des informations sur le contenu de l’archive.
Exercice 5 : Extraire le contenu d’une archive
Pour extraire l’ensemble des fichiers contenus dans l’archive, il suffit de faire :
jar -xvf geometrie.jar
Pour n’extraire que certains fichiers, il suffit de les lister sur la ligne de commande. Par exemple,
pour extraire le fichier « manifeste », il suffit de faire :
jar -xvf geometrie.jar META-INF/MANIFEST.MF
Vous pouvez maintenant consulter le contenu de ce fichier.
Exercice 6 : Rendre une archive « exécutable »
Pour qu’une archive soit exécutable, il faut indiquer quelle est la classe principale (qui contient la méthode main). Ceci est précisé dans le manifeste de l’archive en utilisant la propriété
Main-Class.
TP 3
2/4
O UTILS
POUR LE
G ÉNIE L OGICIEL
Paquetages, archives et CLASSPATH
jar -umf geometrie.mf geometrie.jar
Cette commande ajoute au manifeste de l’archive geometrie.jar les informations contenues dans
le fichier geometrie.mf.
Le fichier geometrie.mf contient :
Main-Class: geometrie.TestSchema1
Remarque : Il est possible de combiner la création du fichier d’archive et la définition du manifeste en faisant par exemple :
jar -cvmf geometrie.mf geometrie.jar geometrie/*.class afficheur/*.class
Attention : L’ordre des paramètres a une importance : on a mis l’option m avant l’option f donc,
il faut d’abord donner le nom du fichier contenant le manifeste, puis le nom de l’archive. La ligne
suivante est donc équivalente.
jar -cvfm geometrie.jar geometrie.mf geometrie/*.class afficheur/*.class
Exercice 7 : Exécuter un fichier d’archive
Pour exécuter une archive, il suffit d’utiliser l’option -jar de la commande java.
java -jar geometrie.jar
On peut également donner des arguments au programme :
java -jar geometrie.jar -2
Attention : Il faut que dans le manifeste de l’archive, la classe principale ait été identifiée (cf
exercice 6).
3 Notion de « CLASSPATH »
La variable d’environnement CLASSPATH ou l’option -classpath (-cp en abrégé) des outils du
jdk permettent de préciser une liste de répertoires ou d’archives JAR ou ZIP dans lesquels des
fichiers de classes peuvent être trouvés.
Exercice 8 : Premier exemple
Pour les besoins de cet exercice, il faut copier tous les fichiers de l’application sur l’éditeur
de schémas mathématiques dans le répertoire /tmp/EDITEUR et se placer dans son répertoire
racine. Nous ne travaillerons maintenant plus que sur les fichiers du répertoire /tmp/EDITEUR.
8.1 Expliquer pourquoi la commande suivante échoue.
java geometrie.TestSchema1
8.2 Utiliser l’option -classpath pour exécuter l’application.
java -cp /tmp/EDITEUR geometrie.TestSchema1
8.3 Utiliser la variable d’environnement CLASSPATH pour exécuter l’application.
Exercice 9 : Utilisation de bibliothèques dans des fichiers d’archive
L’éditeur de schémas mathématiques est en fait composé d’une partie concernant l’afficheur
TP 3
3/4
O UTILS
POUR LE
G ÉNIE L OGICIEL
Paquetages, archives et CLASSPATH
(classes du répertoire afficheur) et d’une partie correspondant à l’éditeur (classes du répertoire
geometrie). L’afficheur est en fait une bibliothèque qui pourra être utilisée dans différentes applications, il est donc logique d’en faire une archive.
9.1 Construire l’archive de l’afficheur et supprimer le répertoire correspondant. Expliquer comment faire pour compiler et exécuter l’application.
9.2 Faire une archive contenant les classes de l’éditeur (et seulement les classes de l’éditeur).
Expliquer comment faire pour exécuter cette application depuis le répertoire racine.
TP 3
4/4