Exemple 6-1: Le package javagently dézippé
-
Le répertoire du livre "JavaGently" est ici:
/comm/tecfa/www/guides/java/examples/gently/
-
Il contient le sous-répertoire javagently
(qui s'appelle obligatoirement "javagently" à cause du package name)
tecfasun4:examples 37) ls -la gently/javagently
total 20
drwxrwxr-x 2 schneide tecfa 512 Dec 3 10:42 ./
drwxrwxr-x 18 schneide tecfa 512 Dec 3 10:36 ../
-rw-r----- 1 schneide tecfa 3506 Dec 3 10:42 Text.class
-rw-r----- 1 schneide tecfa 3975 Dec 3 10:42 Text.java
-
Le CLASSPATH ou -classpath doit contenir:
/comm/tecfa/www/guides/java/examples/gently/
javac -classpath "/comm/tecfa/www/guides/java/examples/gently/" Controller.java
et PAS:
/comm/tecfa/www/guides/java/examples/gently/javagently
C. Utilisation de packages de type *.jar ou *.zip
-
Il n'est pas utile de dézipper une archive de type *.jar ou de type *.zip bien fait.
-
En gros, un fichier *.jar est à priori "bien fait", un fichier *.zip n'est peut-être qu'une archive de fichiers (et pas fait spécialement pour Java)
-
Il faut mettre chemin/fichier *.jar ou *.zip dans le classpath !
-
Attention: s'il n'est pas correctement zippé (comme par exemple le package JavaGently cela ne marche pas, j'ai du utiliser l'outil "jar")
6.1 Applications et applets avec plusieurs fichiers et archives
-
On reprend l'See Inclure des archives et des classes dans une applet
-
Tous les fichiers se trouvent dans le répertoire project. Ces fichiers peuvent être compilés en une seule fois, s'ils sont dans le classpath
-
L'argument -d de javac met les fichiers *.class dans un autre répertoire
-
Voici la ligne de compilation (sous Unix)
javac -g -d classes -classpath /local/java/classes/xml-ea2/xml.jar:/local/java/jdk1.2/lib/classes.zip project/PlayElement.java project/ProjectElement.java project/SceneElement.java project/ShowElement.java project/TitledElement.java project/GuiDemo.java
-
Voici l'instruction pour faire l'archive:
cd classes; jar cvf ../project.jar *
-
Voici la structure complète du répertoire APRES compilation:
tecfasun4:sun-gui 236) ls -R
.:
Makefile TECFA.README example2.html project.jar
Makefile.ORI classes/ example2.html.ORI show.props
README example1.html play.props
README.html example1.html.ORI project/
./classes:
project/
./classes/project:
GuiDemo$1.class ProjectElement.class
GuiDemo$ErrorDialog.class SceneElement.class
GuiDemo$ErrorPrinter.class ShowElement$MaskedNode.class
GuiDemo$TreePanel.class ShowElement.class
GuiDemo.class TitledElement.class
PlayElement.class
./project:
GuiDemo.java ProjectElement.java ShowElement.java
PlayElement.java SceneElement.java TitledElement.java
Exemple 6-2: Le package javagently comme *.jar file
jar cfv javagently.jar javagently
-
javagently.jar doit être dans le classpath, exemple (une ligne!):
javac -classpath "/comm/tecfa/www/guides/java/examples/gently/ javagently.jar:/local/java/jdk1.1.7/lib/classes.zip" Controller.java