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 :

NullPointerException lors d'un method.invoke()


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Par défaut NullPointerException lors d'un method.invoke()
    Bonjour à tous !

    Je sèche un peu sur le problème que je rencontre.

    Voilà le code :
    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
     
    		String answerText = "blabla";
    		Class<?> c = null;
    		Answer<?> tmp = null;
    		Method meth = null;
     
    		try {
    			c = Class.forName("AnswerFactorySymbolic");
    		} catch (ClassNotFoundException e) {
    			System.out.println("AnswerFactory not found when searching...");
    			e.printStackTrace();
    		}
     
    		Method[] allMethods = c.getDeclaredMethods();
     
    		for (Method m : allMethods){
    			System.out.println(m.getName());
    			if (m.getName().equals("buildAnswer")) meth = m;
    		}
     
    		try {
    			tmp = (Answer<?>) meth.invoke(null, answerText);
    		} catch (IllegalArgumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InvocationTargetException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    En gros, je trouve une classe via son nom, ensuite je viens chercher la méthode "buildAnswer" de cette classe. J'ai fait un test en affichant la méthode, il la méthode est bien trouvée (le programme m'affiche bien la méthode entière avec les paramètres).
    Sauf que, au moment de l'invoke, il me sort ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Exception in thread "main" java.lang.NullPointerException
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at Questionnaire.createQuestion(Questionnaire.java:88)
    	at Questionnaire.initQuestionnaire(Questionnaire.java:43)
    	at Questionnaire.<init>(Questionnaire.java:23)
    	at Questionnaire.main(Questionnaire.java:123)
    Et je ne comprends pas du tout pourquoi. J'ai même fait un copié collé de l'énoncé de TP (où il est expliqué comment fait pour trouver la classe via son nom et invoquer la méthode) et j'ai aussi cette erreur.

    Merci d'avance à celui qui m'aidera à la résoudre

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Elle est peut-être simplement pas static, cette méthode buildAnswer.

    Passer null comme premier argument de Method.invoke(), c'est possible que pour les méhodes static.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 65
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Elle est peut-être simplement pas static, cette méthode buildAnswer.

    Passer null comme premier argument de Method.invoke(), c'est possible que pour les méhodes static.
    En effet, après une recherche dans les tutoriaux dispo sur le site d'oracle, j'ai enfin compris comment utiliser cette méthode. En fait c'est dû à une négligence de ma part, j'aurai du mieux regarder ce tutoriel dès le départ).

    Ce tuto est là, au cas où
    http://download.oracle.com/javase/tu...nvocation.html

    Merci beaucoup

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

Discussions similaires

  1. NullPointerException lors d'un resultset.next()
    Par theophanie dans le forum JDBC
    Réponses: 10
    Dernier message: 10/08/2010, 13h20
  2. Method invoke avec List<generics>
    Par youx21 dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 09h11
  3. [EJB3 Entity] NullPointerException lors d'appel persist
    Par tiamat dans le forum Java EE
    Réponses: 21
    Dernier message: 17/10/2007, 14h37
  4. Réponses: 6
    Dernier message: 08/03/2007, 14h55
  5. [Reflexivite]exception ArrayIndexOutOfBoundsException methode invoke
    Par caro_a dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/07/2006, 11h35

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