Lire informations fichier class dans un programme java [Résolu]

Messages postés
3
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
27 janvier 2005
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
27 janvier 2005
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de traedre
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
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)

++
Commenter la réponse de cs_GodConan
Messages postés
3
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
27 janvier 2005
0
Merci
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.

++
Commenter la réponse de traedre
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
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
Commenter la réponse de cs_GodConan