cs_dhalte
Messages postés4Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention19 juin 2011
-
16 juin 2011 à 22:07
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDerniè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.
cs_dhalte
Messages postés4Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention19 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 ?
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 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...
cs_dhalte
Messages postés4Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention19 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
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 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)