Lire informations fichier class dans un programme java

Résolu
traedre Messages postés 3 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 27 janvier 2005 - 10 sept. 2004 à 11:56
traedre Messages postés 3 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 27 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).

Si quelqu'un a une idée, qu'il n'hésite pas...

Merci

4 réponses

traedre Messages postés 3 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 27 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

J'éspère que ca pourra aider quelqu'un.
3
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
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)

++
0
traedre Messages postés 3 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 27 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.

++
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
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 !!!!

gl
0
Rejoignez-nous