TD 3 - Packages 1 Création de package en

Transcription

TD 3 - Packages 1 Création de package en
IUT Charlemagne - Dept info
Complément JAVA
2012-2013
DUT 2A
TD 3 - Packages
Dans ce sujet, on va commencer à structurer l’application en répartissant les classe
créées dans différents package. Vous allez devoir construire
– un package carte contenant le réseau et les classes qui s’y rapporte (noeuds, ...)
– un package algo contenant les classes Algorithme et Chemin
– un package par défaut contenant les classes de tests déjà crées (Principale,
TestClone, ...)
Cela sera fait dans un premier temps à l’aide d’un simple éditeur de texte puis en
utilisant les fonctionnalités d’Eclipse. La première partie est sans aucun doute la plus
intéressante puisque c’est grâce à elle que vous comprendrez la manière dont les packages
sont structurés, la seconde partie tirant patrie des fonctionnalités d’Eclipse masque en
effet beaucoup de choses.
1
Création de package en mode console
Figure 1 – Structure des fichiers
L’objectif est de structurer votre application en plusieurs parties :
Cpt JAVA - TD 3 - Packages
1
– les sources de l’application à partir desquelles l’application est compilée
– les fichiers résultants .class à partir desquels l’application est exécutée
– les fichiers résultants .jar liés et utilisés lors de l’exécution de l’application
On ajoutera en outre deux scripts dans le répertoire de travail
– un script compile.bat qui compile l’ensemble des fichiers et génère les .jar pour
que nous soyons constamment sûr de la bonne version des fichiers
– un script execute.bat qui exécute l’application avec les bonnes bibliothèques.
A l’issue de cette partie, vous devriez avoir une structure de répertoire similaire à
la structure de la figure 1.
1.1
Récupération des classes écrites sous Eclipse
La première étape va consister à créer les packages à partir des sources des classes
existantes issues du TP1 et du TP2. Á partir d’Eclipse, sélectionnez le projet et exportez en les sources. Commencez à structurer votre répertoire TP3 conformément à la
figure 1 en créant les sous-répertoires src, bin, lib, carte et algo.
Récupérer sur l’ENT le fichier affiche.jar qui contient les classes Affiche et
JPanelReseau qui se trouvent désormais dans un package nommé graphisme (conformément
à la figure 1).
1.2
Création des packages
Ajoutez dans les répertoires src/carte et src/algoles fichiers java correspondants
et faites les déclarations qui s’imposent.
Testez que les classe compilent bien en copiant ce répertoire TP3 dans un autre
répertoire temporaire que vous effacerez ensuite 1 .
1.3
Script de compilation
L’objectif du script de compilation va être de
– compiler l’ensemble des fichiers sources de votre projet ;
– utiliser correctement le fichier affiche.jar ;
– déplacer tous les fichiers résultants dans les bons répertoires bin et lib.
Cela peut se faire avec un Makefile sous linux ou en utilisant un fichier .bat sous
windows.
Pour compiler les fichiers sources, il faut que le classpath et le sourcepath 2 soient
correctement configurés. Dans le cas présent, le sourcepath doit désigner l’endroit où
se trouvent les fichiers sources (ou le package par défaut).
1. Ceci afin de ne pas polluer vos répertoires de travail
2. Le sourcepath fonctionne de la même manière que le classpath mais alors que le classpath sert à
désigner l’emplacement des fichiers .class, le sourcepath sert à désigner l’emplacement des fichiers sources
.java nécessaires à la compilation
Cpt JAVA - TD 3 - Packages
2
L’option -d de javac permet de spécifier où sont stockés les fichiers .class obtenus
lors de la compilation.
2
Script d’exécution
A l’issue de la partie précédente, vous devez avoir un script capable de générer
tous les fichiers référencés dans la figure 1. Ecrivez le script execute.bat capable de
lancer l’application Principale.class en spécifiant les bonnes bibliothèques (le fichier
affiche.jar que vous avez préalablement récupéré)
3
Exportation de l’application
3.1
Créez les fichiers .jar
Une fois que les fichiers .class ont été générés, utiliser la commande jar pour
construire les bibliothèques carte.jar et algo.jar. Chacune de ces bibliothèques
contient les fichiers .class du package et est stockée dans le répertoire lib. Pour
spécifier l’endroit à partir duquel compresser les fichiers, il est possible d’utiliser l’option -C ou de changer de répertoire avant de faire la commande jar.
Une fois les fichier jar générés, les fichiers .class qui ont été inclus ne sont plus
utiles et doivent être effacés (commande del sous windows). Si vous ne le faites pas,
ce sont ces fichiers qui risquent d’être utilisés à l’exécution et non pas les fichiers .jar
que vous avez créés.
incorporez ces modifications dans votre fichier de compilation. Désormais, le repertoire bin ne contient plus que le fichier Principale.class, les package carte et algo
sont stockés dans leurs package respectifs.
3.2
Déplacer les fichiers résultants
Il est possible que les fichiers .jar que vous avez créés ne soient pas situés au
bon endroit initialement, auquel cas faites le déplacements supplémentaires si besoin
(commande copy sous windows)
3.3
Tests
Vérifiez que tout fonctionne correctement avant de passer à Eclipse.
Ainsi, vous devez désormais savoir comment générer et utiliser des fichiers .jar et
comment modifier un classpath.
4
Création de package à partir d’Eclipse
Reprenez votre projet Eclipse issu du TP2.
Cpt JAVA - TD 3 - Packages
3
4.1
Création des packages
Créer deux packages vides carte et algo. Pour cela, utilisez le menu ’File -->
New ... --> Package’.
4.2
Remplir des packages
Faites glisser les fichiers correspondants dans les bons packages.
Une fois cela fait
1. Allez voir dans le répertoire correspondant à votre projet et observez la différence.
qu’est-ce qui a changé ?
2. Regardez vos fichiers et observez les différences (en terme de déclaration et d’import). Quelles sont-elles ?
Mettez à jour les fichiers pour que cela fonctionne correctement.
4.3
Création d’un fichier .jar
À partir du package carte faites un fichier carte.jar. Pour cela, cliquez avec le
bouton droit sur le package et sélectionnez ’export --> jar file’.
Faites de même avec le package algo.
4.4
Création d’un jar du projet
Créez aussi un fichier.jar contenant tout le projet (bouton droit sur le projet, menu
’export --> jar file’) avec pour point d’accès la classe Principale.
5
Exécution des fichiers jar
Vous disposez à la suite des opérations précédentes de trois fichiers jar. L’application
peut se lancer
1. soit à partir du fichier projet.jar qui contient toutes les classes
2. soit à partir des deux fichier jar carte.jar et algo.jar
5.1
A partir de projet.jar
Comme le point d’entrée a été spécifié dans le fichier projet.jar, il est possible
d’utiliser l’option ’-jar’ au lancement de la commande java.
Cependant, cette commande écrase les options de classpath. Il est nécessaire de
modifier le fichier MANIFEST.MF de l’archive pour préciser le classpath à utiliser,
an ajoutant la ligne :
Class-Path: affiche.jar
Cpt JAVA - TD 3 - Packages
4
5.2
A partir de carte.jar et algo.jar
Il faut dans un premier temps ajouter les .jar au classpath (ou utiliser la commande
-cp) et préciser comme point d’entrée la classe Principale du package par défaut (à
savoir Principale).
5.3
Avec un main extérieur
Écrivez un main dans une classe extérieure aux fichier .jar. Compilez le et exécutez
le en utilisant les fichiers .jar.
Cpt JAVA - TD 3 - Packages
5