comment utilise-t-on "package" ??? [JAVA] - Java - Programmation
Marsh Posté le 10-05-2002 à 23:33:18
mettre tes sources dans une arborescence qui correspond à ta déclaration package.
Marsh Posté le 11-05-2002 à 00:31:38
ouais ... c'est un peu complexe au début. C'est long à expliquer.
Le mieux c'est de citer le maitre :
Citation : Il faut se rappeler que chaque fois qu'on crée un package, on spécifie implicitement une structure de répertoire en donnant un nom à un package. Le package doit se trouver dans le répertoire indiqué par son nom, qui doit être un répertoire qui peut être trouvé en partant du CLASSPATH. L'utilisation du mot-clé package peut être un peu frustrante au début, car à moins d'adhérer à la règle nom-de-package - chemin-de-répertoire, on obtient un tas de messages mystérieux à l'exécution signalant l'impossibilité de trouver une classe donnée, même si la classe est là dans le même répertoire |
Marsh Posté le 11-05-2002 à 00:44:33
(saloperie de touche tab)
donc, si tu es dans le rep c:\java
tu as une class Toto.java dans ce rep. si elle n'a pas de package, tu compiles avec un javac Toto.java => tu obtiens Toto.class. Ensuite tu lance le programme en fesant java Toto
là ca marche. C'est facile sans les package !
maintenant, avec les packages :
tu veux créer une class Tata.java dans un package nommé "tralala".
d'abord, il faut que tu créé le répertoire c:\java\tralala
il faut ensuite créer le fichier c:\java\tralala\Tata.java
Ce fichier devra commencer par package tralala; (si il y a des import, tu les mets apres)
pour compiler, il faut que tu sois à la racine du package => dans c:\java
tu fais javac tralala\Tata.java ca va te créer le ficher c:\java\tralala\Tata.class
pour lancer le programme, il faudra faire java tralala.Tata (toujours depuis c:\java)
Voila pour les packages. Le truc à comprendre, c'est qu'il faut que l'arborecense de repertoire corresponde à l'arboresence des package, et que on compile et execure les fichier java à partir de la racine de cette arborecense.
tu parlais aussi du classpath. En faite, c'est parce que tu n'es pas obligé de te situer à la racine de cette arborecense : le classpath sert à indiquer une liste d'arborecense de tes sources java, mais uniquement pour l'execution (pas la compile)
exemple : si ton classpath contient c:\java, et que tu te trouves sur d:\
tu pourras compiler en fesant :
javac c:\java\Toto.java et lancer en fesant java Toto
ou
javac c:\java\tralala\Tata.java et lancer en fesant java tralala.Tata
voila, j'espere que j'ai été un peu clair (j'en suis pas sur du tout). Pour mon excuse, c'est pas facile à expliquer.
Marsh Posté le 11-05-2002 à 12:11:16
une remarque pour la compilation.
Tu n'es pas du tout obligé comme benou semble le dire d'etre dans la racine de ton package pour compliler. Tu peux très bien faire
c:\java\tralala>javac Tata.java
ca marchera aussi
A+
Marsh Posté le 11-05-2002 à 13:38:59
DarkLord a écrit a écrit : une remarque pour la compilation. Tu n'es pas du tout obligé comme benou semble le dire d'etre dans la racine de ton package pour compliler. Tu peux très bien faire c:\java\tralala>javac Tata.java ca marchera aussi A+ |
ouep.
Marsh Posté le 11-05-2002 à 14:27:39
Sauf que si tralala.Tata importe touti.Toto défini dans c:\java\touti\Toto.java, ça ne marchera pas en compilant le fichier Tata.java de là où il se trouve.
Marsh Posté le 10-05-2002 à 23:11:33
Voila : à part mettre "package ____" au début de chaque fichier source, qu'y a-t-il d'autre à faire pour que ça fonctionne ? (C'est une histoire de CLASSPATH je crois)
Merci !