traedre
Messages postés3Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention27 janvier 2005
-
10 sept. 2004 à 11:56
traedre
Messages postés3Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention27 janvier 2005
-
27 janv. 2005 à 16:33
Bonjour,
j'ai un petit souci à résoudre.
Pour une application, je récupère un nom de fichier déjà compilé (donc en .class).
A partir de là, j'aimerais récupérer dans le fichier .class le nom du package.
J'ai tenté avec un ClassLoader mais pour faire un newInstance (et récupérer un objet Class), il faut rentrer le nom qualifé de l'objet en question (package.Objet) ce qui pose un problème puisque c'est ce nom de package qui m'intéresse...
Je considère que l'on ne peut pas se baser sur l'arborescence de fichier pour connaitre le nom de package (trop peu fiable).
traedre
Messages postés3Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention27 janvier 2005 27 janv. 2005 à 16:33
Bon, j'étais totalement passé à autre chose puis comme ça, ca m'a repris de résoudre ce problème pour des besoins logiciels.
Le pb à l'époque était de pouvoir récupérer un fichier .class (par
exemple avec un composant de type JFileChooser) et obtenir les infos
sur cette classe...
Et bien en fait il faut juste la libraire BCEL (traitement de byte code Java) de Apache et 3 lignes de codes:
on se sert des parsers de la librairie qui est vraiment très pratique et très simple d'utilisation.
file_name = "C:/directory/fichier.class"
try {
ClassParser classparser = new ClassParser(file_name) ;
JavaClass inputClass = classparser.parse() ;
System.out.println(inputClass.getPackageName());
System.out.println(inputClass.getClassName()) ;
}
catch (Exception e) {
e.printStackTrace() ;
}
voila pour la forme. Il reste plein d'autres possibilités.
Comme j'aime bien les choses bien faites, j'apporte la solution à mon propre problème... lol
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 10 sept. 2004 à 13:10
GodConan :clown)
a partir d une instance d une class tu peu retrouver son package dc il te suffi de creer une reference d un objet instancier de cette class .. ;o) apres tout est dans la reflexion... ;o)
traedre
Messages postés3Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention27 janvier 2005 10 sept. 2004 à 14:22
ben justement, il n'y a pas d'objet instancié par cette classe puisque le but est d'ouvrir un fichier .class pour l'instancier et retrouver son package.
Comme je l'ai dit précedemment, pour créer une instance de cette classe, il faut que je connaisse son package alors que c l'info qui m'intéresse.
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 10 sept. 2004 à 14:44
GodConan :clown)
Si tu n admet pas que sont emplacement ds l arborressence est fiable c cho... ;o)
autrement si tu edite un fichier class tu tapcevra que la premierre chaine lisible est le nom de la class (sont package compris)
si tu n a pas d autre moyen cela peu en etre un : Lire ds le fichier !!!!