IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

ClassLoader et Reflexion


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut ClassLoader et Reflexion
    Salut à tous,

    J'essaie de charger des classes à partir du code binaire (.class) avec un ClassLoader dans le but d'extraire quelques informations concernant les classes (attributs, méthodes, héritages, interfaces ...).

    J'arrive bien à Loader les classes, trouver la signature des attributs et méthodes, mais le problème qui arrive est le suivant:
    Disons que j'ai chargé une classe Classe1 avec mon ClassLoader et que cette classe implémente l'interface Interface1, voici ce que je fais pour retrouver les interfaces que Classe1 implémente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class classe1 = monClassLoader.loadClassFromFile(
    path, name); // fonctionne bien
    mais quand j'essaie d'extraire les interfaces avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Type[] iTypes = classe1.getGenericInterfaces();
    ce qui arrive ici est que Interface1 n'est pas reconnu par le ClassLoader original mais seulement par mon ClassLoader (puisqu'elle ne fait pas partie du classpath) et donc quand j'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Type[] iTypes = classe1.getGenericInterfaces();
    celle ci déclenche une exception parce qu'elle ne connaît pas Interface1.

    Est ce qu'il y a un moyen de charger Interface1 et faire en sorte qu'elle soit reconnu comme si elle fesais partie du classpath ?

    Merci !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Il faut utiliser la classe URLClassLoader pour charger les classes en spécifiant le répertoire parent ou se trouve tous les fichiers .class et tout fonctionnera bien par la suite.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2009, 01h43
  2. [ClassLoader][Image] issue d'un jar en constante
    Par julp dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 23/04/2007, 23h58
  3. [ClassLoader]icones non visibles
    Par phil_ma dans le forum Général Java
    Réponses: 4
    Dernier message: 19/01/2005, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo