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

avec Java Discussion :

Charger une classe avec forName


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Charger une classe avec forName
    Bonjour,

    Mon prof de licence nous à montrer et donner un code pour nous donner un exemple de la réflexion que je n'arrive pas à refaire fonctionner (malgré ma réflexion, haha )

    Dans un même dossier j'ai :
    Test.class
    Test.java
    TestReflexion.java

    Voici le contenu de mon fichier TestReflexion.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package testreflexion;
     
    import java.lang.reflect.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    /**
     *
     * @author Leinox
     */
    public class TestReflexion {
     
        private Class<?> cl;
        private Method[] lesM;
     
        public TestReflexion(String className) {
            try {
                cl = Class.forName(className);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(TestReflexion.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            System.out.println(args[0]);
    //        TestReflexion testReflexion = new TestReflexion(args[0]);
            TestReflexion testReflexion = new TestReflexion("Test");
        }
     
    }
    Et voici ce qu'on me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    run:
    Test
    mars 08, 2015 9:57:01 PM testreflexion.TestReflexion <init>
    GRAVE: null
    java.lang.ClassNotFoundException: Test
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:259)
    	at testreflexion.TestReflexion.<init>(TestReflexion.java:18)
    	at testreflexion.TestReflexion.main(TestReflexion.java:30)
    Je ne comprend pas. Comment indiquer à Class.forName l'endroit où chercher ma classe Test ? Pouvez vous m'aider svp ?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Citation Envoyé par Leinox Voir le message

    java.lang.ClassNotFoundException: Test
    le message d'erreur est pourtant clair: il manque la classe Test

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il faut passer à Class.forName() le nom complet de la classe, donc y compris son package.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Il faut passer à Class.forName() le nom complet de la classe, donc y compris son package.
    Parfait ! Merci !

    En effet avec la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TestReflexion testReflexion = new TestReflexion("testreflexion.Test");
    c'est beaucoup mieux

    Reste à trouver un moyen pour arriver à les charger à partir d'un chemin absolue, alors que ces classes ne sont pas forcément dans des package. Pour vous mettre dans le sujet de mon TP : je réalise un mini eclipse avec les fonctionnalité minimum. Par contre il est demandé un JTree contenant les méthodes de ma classe, ses attributs et leurs propriétés (le navigator d'eclipse/netbeans/etc...).

    Bref je vais cherché.

    Merci encore de m'avoir débloqué

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Leinox Voir le message
    Reste à trouver un moyen pour arriver à les charger à partir d'un chemin absolue, alors que ces classes ne sont pas forcément dans des package.
    Indice :
    URLClassLoader

    Citation Envoyé par Leinox Voir le message
    Pour vous mettre dans le sujet de mon TP : je réalise un mini eclipse avec les fonctionnalité minimum. Par contre il est demandé un JTree contenant les méthodes de ma classe, ses attributs et leurs propriétés (le navigator d'eclipse/netbeans/etc...).
    Indice(s) :

    Java Reflection / Réflexivité ou introspection

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Indice :
    URLClassLoader


    Indice(s) :

    Java Reflection / Réflexivité ou introspection
    Wouhou ! Parfait !

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

Discussions similaires

  1. [windows] charger une dll (avec classe)
    Par superpok dans le forum Windows
    Réponses: 11
    Dernier message: 09/09/2007, 12h15
  2. creer une classe avec VC++
    Par Spacy_green dans le forum MFC
    Réponses: 6
    Dernier message: 08/06/2006, 18h53
  3. Charger une table avec PK, puis ajouter identity sur la PK
    Par heloise31 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/01/2006, 17h23
  4. charger une image avec Jframe
    Par Battosaiii dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 15/12/2005, 16h35
  5. Réponses: 5
    Dernier message: 26/05/2005, 16h40

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