Java et la réflexion

cs_dhalte Messages postés 4 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 19 juin 2011 - 16 juin 2011 à 22:07
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 19 juin 2011 à 19:02
Bonjour
j'ai étudié les possibilités de java.lang.reflect qui permet de découvrir les caractéristiques d'une classe quand on connaît son existence, mais il y a une chose que je n'arrive pas à faire, c'est découvrir les classes disponibles d'un programme ou d'un package.

Pouvez-vous m'orienter ?

7 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
17 juin 2011 à 16:40
Salut,

C'est tout simplement impossible par code^^

gmi19oj19
0
cs_dhalte Messages postés 4 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 19 juin 2011
17 juin 2011 à 16:54
Merci pour cette réponse, bien qu'elle me laisse sur ma faim
comment font les débuggers ? comment fait eclipse ?
java serait-il moins puissant que crimosoft framework sur les capacités d'introspection ?
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
17 juin 2011 à 17:08
Salut,

Comment ça "comment fait Eclipse ?" ? ^^"

gmi19oj19
0
cs_dhalte Messages postés 4 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 19 juin 2011
17 juin 2011 à 17:12
On peut ajouter des jars au projet et eclipse nous affiche alors la liste des classes de ces jars

me trompai-je ?
ma question, toute innocente, était : comment fait-il pour connaitre le contenu de ces bibliothèques
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
17 juin 2011 à 20:44
C est asser simple ;o) ... il suffit de lire le contenu du jar (ou fichier zip) un fichier correspondant à une class ... on utilise ensuite le classloader pour savoir si le fichier correspond effectivement à une class...

GodConan ;o)
0
cs_dhalte Messages postés 4 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 19 juin 2011
19 juin 2011 à 18:34
ok

chaque classe qui n'est pas incluse dans une autre est obligatoirement dans un fichier .class de même nom (une fois compilée) et dans une arborescence qui reflète sa hiérarchie dans les packages

ces .class peuvent être dans des archives .zip ou .jar, qu'on manipule par ZipFile ou JarFile

le nom du fichier et son arborescence permettent de déduire (remplacement des / par ., suppression de .class) le nom décoré de la classe;

la méthode static Class.getSystemClassLoader() permet ensuite de charger la classe par son nom décoré pour vérification, et les méthodes de Class permettent alors de connaître le contenu de celle-ci.

merci à Conan le barbare

question suivante : comment un programme peut-il connaître la liste des .class et .jar (ou .zip) qui lui sont accessibles ? j'ai listé les variables d'environnement dans le main() de mon programme mais n'ai pas trouvé de classpath
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
19 juin 2011 à 19:02
Avec ca normalement tu obtients la bonne liste :
System.getProperties().list( System.out);
ce qui te permet de trouver ta variable environement : java.class.path
d'ou l extraction du classpath comme suit :
String classPath = System.getProperties().getProperty("java.class.path");
ensuite tu fais un petit parsing de ta chaine avec ";" comme séparateur et tu as tout tes chemins.... ;o)

GodConan ;o)
0
Rejoignez-nous