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

Langage Java Discussion :

Faire de la reflexion à partir de .java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 5
    Par défaut Faire de la reflexion à partir de .java
    Bonjour,

    Je cherche à pouvoir faire de la reflexion (introspection de .class sur les methodes, les champs etc ..) seulement je souhaite selectionner le fichier (monfichier.java) à introspecter via un File Chooser.

    Le problème est que le ClassLoader ne trouve pas la classe et je me retrouve bloqué.
    J'ai tenté ca mais sans succes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    JFileChooser fc = new JFileChooser();
     
    File f = fc.getCurrentDirectory();
    URL url = file.toURL();
    URL[] urls = new URL[]{url};
    ClassLoader cl = new URLClassLoader(urls);
     
    String str = fc.getSelectedFile().getName().split(".java")[0];
    Class cls = cl.loadClass(str)
    Et la j'ai une exception de ClassLoadNotFound

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    L'introspection se fait sur des fichiers compilé et non pas sur des fichiers sources.

    A ma connaissance il n'existe rien de tel en standard...

    a++

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 5
    Par défaut
    Hello,

    Je viens de tester sur les .class mais je n'arrive toujours pas à loader les classes.
    Les fichiers .class se situent dans le chemin /.../.../bin/arborescence/...
    Je viens de tester de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ClassLoader cl = ClassLoader.getSystemClassLoader();
    cl.getRessource("/.../.../bin/");
     
    Class<?> cls = Class.forName(fileChooser.getSelectedFile.getName());
    Le ClassLoader n'a pas l'air de trouver mes classes.

    Merci d'avance

  4. #4
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 15
    Par défaut
    Salut,
    pour charger un .class ou un .jar extérieur au classpath,
    utilise la fonction System.load(String path)
    où path est le chemin complet vers le fichier

Discussions similaires

  1. [DOM] [Débutant(e)] écrire sur un fichier XML à partir de java
    Par Samanta dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/02/2008, 11h13
  2. Réponses: 5
    Dernier message: 24/09/2005, 20h31
  3. [Son] Faire des bruits avec une application java
    Par mammistegon dans le forum Multimédia
    Réponses: 6
    Dernier message: 22/01/2005, 17h17
  4. [IO][FTP] faire un FTP a partir d'une applet
    Par irkirabie dans le forum Applets
    Réponses: 3
    Dernier message: 19/11/2004, 15h19
  5. Unité Delphi appelée à partir de JAVA
    Par babaahmed dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 26/04/2003, 10h51

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