France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 511 membres enregistrés - 2 069 318 posts - 122 026 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Sujets divers
                [Java] [RESOLU] probleme de debutant avec les packages et les imports
114 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
[Java] [RESOLU] probleme de debutant avec les packages et les imports

Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 06 September 2005 - 11 h 21 m 49 s
Bonjour,

j'ai crée une classe MaClasse qui est public que j'ai placée dans le repertoire macompany/net

La 1ere ligne de MaClasse est:
package macompany.net;

Lorsque dans une classe du repertoire courant je fais:
import macompany.net.*;

le compilateur ne trouve pas la classe. L'editeur Eclipse me dit meme: "can't resolve import macompany.net'.

Ou est mon erreur?
Merci pour vos reponses/explications car les docs que j'ai trouvée ne m'ont pas ete d'une grande aide.


Message édité 1 fois, la dernière par Gosseyn le 06 September 2005 - 12 h 05.

"Si vous perdez, ne perdez pas la leçon."
Gosseyn


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 06 September 2005 - 12 h 07 m 49 s
Bon ben c'est resolu mais je ne sais pas pourquoi.
Comme cela marchait sur la ligne de commande, j'ai fais plusieurs tentatives d'effacement et recreation de package sous Eclpse et c'est "tombé en marche"
Si qqu'un a tout de meme une explication, je suis preneur cela me fera gagner du temps pour la prochaine fois.



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 06 September 2005 - 14 h 39 m 29 s
Bon, déjà t'es pas obligé de faire un import...

Essaie lors de l'utilisation de ta classe de l'appeler comme ceci :

macompany.net.MaClasse toto = new macompany.net.MaClasse();

Juste en guise de debug...
Ensuite, lorsque tu compiles, es-tu sûr de lui avoir dit de compiler tous les sous-répertoires à partir de la racine ?



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 06 September 2005 - 16 h 02 m 29 s


Le 06 septembre 2005 - 14 h 39, gege38 a écrit :
Bon, déjà t'es pas obligé de faire un import...

Ok. Cela veut-il dire que la machine virtuelle recherche toutes les classes disponibles a partir du repertoire courant ou des rep du classpath?


Essaie lors de l'utilisation de ta classe de l'appeler comme ceci :

macompany.net.MaClasse toto = new macompany.net.MaClasse();

J'ai essayé cela mais cela ne marchait pas non plus. Maintenant que ça marche je pense que cette ligne marche aussi.Dois-je utiliser cette notation si je ne fais pas l'import ou est-ce totalement independant?


Ensuite, lorsque tu compiles, es-tu sûr de lui avoir dit de compiler tous les sous-répertoires à partir de la racine ?

Je pense que oui car les fichiers .class etaient presents das tout les repertoires concernés. Je pense que le probleme venait d'Eclipse car cela marchait en ligne de commande. Surement un probleme de chemin de recherche sur le package car a force de les effacer et les recréer, j'ai du changer qqchose qui manquait. ou renseigner un champs correctement.

Merci de ton aide.



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 06 September 2005 - 16 h 10 m 47 s

Ce meme probleme m'est arrive aussi.

J'avais un vieux package de calculs dans le fin fond du tiroir de gauche et quand j'ai voulu le recompiler et le retester avec un nouveau JDK, .. il m'a fallu du temps pour le refaire marcher !!!

Et d'ailleurs j'ai deja oublie comment j'ai fait en pratique .. peut-etre une trace dans le topic Java general :lol:




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 06 September 2005 - 16 h 17 m 00 s


Le 06 septembre 2005 - 16 h 02, Gosseyn a écrit :


Le 06 septembre 2005 - 14 h 39, gege38 a écrit :
Bon, déjà t'es pas obligé de faire un import...

Ok. Cela veut-il dire que la machine virtuelle recherche toutes les classes disponibles a partir du repertoire courant ou des rep du classpath?


En fait, il se base sur le classpath, qui est soit par défaut le répertoire d'exécution, soit un ensemble de répertoires, jars, etc...

Le fait de faire un import java.toto.* va en fait charger dans le classloader à l'avance les classes demandées (et l'on voit donc l'interêt ici de ne faire des import que sur des classes précises, pas sur tout le package)

Sinon, en appelant ta classe comme je l'ai écrit, elle ne sera chargée qu'au moment de son utilisation...
(Note : un très bon exemple pour voir tout ceci peut être de faire du RMI et de sniffer le réseau, on voit alors les classes sérialisées transmises uniquement à l'exécution)



Essaie lors de l'utilisation de ta classe de l'appeler comme ceci :

macompany.net.MaClasse toto = new macompany.net.MaClasse();

J'ai essayé cela mais cela ne marchait pas non plus. Maintenant que ça marche je pense que cette ligne marche aussi.Dois-je utiliser cette notation si je ne fais pas l'import ou est-ce totalement independant?


Si tu n'importes pas ta classes et que tu n'indiques pas sa location, il ne va pas la trouver sauf si :
1/ elle appartient au package java.lang
2/ elle appartient au package <default> (en fait, si elle n'a pas de package)

Donc soit tu importes ta classes auparavant, soit tu fais comme ceci, mais c'est beaucoup plus lourd évidemment !

Attention : Si 2 classes importées ont même nom, il y a nécéssité de quand même préciser à l'utilisation laquelle on adresse (logique, sinon comment voulez-vous que le classloader sache quelle classe il faille charger ?)




Ensuite, lorsque tu compiles, es-tu sûr de lui avoir dit de compiler tous les sous-répertoires à partir de la racine ?

Je pense que oui car les fichiers .class etaient presents das tout les repertoires concernés. Je pense que le probleme venait d'Eclipse car cela marchait en ligne de commande. Surement un probleme de chemin de recherche sur le package car a force de les effacer et les recréer, j'ai du changer qqchose qui manquait. ou renseigner un champs correctement.

Merci de ton aide.


Dans le cas de projets avec de multiples packages, bien vérifier que les packages apparaissent dans le fichier .classpath créé par Eclipse automatiquement et situé àla racine du projet ;)



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 07 September 2005 - 16 h 31 m 07 s
Ok, merci pour ces infos. Les articles/ouvrages sur java traitent surtout du langage mais abordent rarement ce genre de sujet sur la JVM.



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 07 September 2005 - 16 h 43 m 25 s

Si si .. c'est pas dans les premiers chapitres, c'est clair mais les bons bouquins generaux sur Java ont toujours une partie sur les packages ..




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 08 September 2005 - 09 h 19 m 45 s
Sauf que là je ne parlais pas des packages mais du classloader ;) .



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 08 September 2005 - 09 h 30 m 51 s

Ok ;) C'est plutot sur le Net ou dans les bonnes biblio qui possedent des Java Series ..




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 08 September 2005 - 09 h 34 m 44 s
A la décharge de Gosseyn, il est extraordinairement dur de trouver de la bonne doc sur le classloading ;)

Au plus, 1 chapitre pour montrer comment créer son propre classloader mais c'est tout... La JVM n'est que rarement abordée (du moins dans ce que j'ai lu ;))



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 08 September 2005 - 15 h 33 m 59 s
Google => java class loader ya plein d infos et d examples .... C est quoi que tu trouves pas ?




kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 08 September 2005 - 15 h 55 m 18 s


Le 08 septembre 2005 - 15 h 33, kha a écrit :
Google => java class loader ya plein d infos et d examples .... C est quoi que tu trouves pas ?


NB : je susi abonne aux techtips de java (http://java.sun.com/developer/JDCTechTips/) et il y a des trcs inetressant. Par example, faire son propre classloader de sources java et les compiler au runtime.




Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 09 September 2005 - 13 h 30 m 15 s
En fait, je ne cherchais pas d'informations specifiques sur le classloader mais plutot dans une optique globale de connaissance de Java c'est un sujet qui n'est pas vraimment traité. Maintenant je suis sur que l'on peut trouver des livres qui l'abordent ainsi que des articles sur le net qui traitent cette question.

Quant à la techtips sur java, c'est une bonne idée, je pense que je vais m'y abonné.



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


Page genérée en 0.1777 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory