[JAVA] comment utilise-t-on "package" ???

comment utilise-t-on "package" ??? [JAVA] - Java - Programmation

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 !

Reply

Marsh Posté le 10-05-2002 à 23:11:33   

Reply

Marsh Posté le 10-05-2002 à 23:33:18    

mettre tes sources dans une arborescence qui correspond à ta déclaration package.

Reply

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

Reply

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.

Reply

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+


---------------
Just because you feel good does not make you right
Reply

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.
:hello:

Reply

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.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed