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