1

Bonjour,

J'ai une exception (InvocationTargetException) qui se lève lorsque j'utilise une fonction. Pourriez vous m'éclairer sur le pourquoi et si possible m'aider à trouver une solution.
Voici la sutructure de mon programme

class DureeMoyenne{
    .....
    //Renvoi un temps ouvrés en seconde entre deux dates suivant une plage horaire de 8h-18h
    public static int fonctionNbJourOuvre10H(Date d1, Date d2){
        //calcul
    }


    //Recupere des données d'une BD et les traite.
    public static Dataset createDataset(){
        //Connexion a la BD
        //Recupération des données
        Date d1 = new Date();
        Date d2 = new Date();
        d1 = .....
        d2 = .....
        //Traitement des données
        int duree = fonctionNbJourOuvre10H(d1, d2); // A L'AJOUT DE CETTE LIGNE.  INVOCATIONTARGETEXCEPTION SE LEVE ...
    }
}


J'appelle la fonction createDataset via une classe Static que voici :


//dans une autre classe (la classe principale)
static class DisplayGDC implements Runnable {
     public void run() {
            try {
                //appel de la fonction createDataset (grace a la methode invoke()           
           }
           catch (ClassNotFoundException e1) {
                e1.printStackTrace();
           }
           catch (NoSuchMethodException e2) {
                e2.printStackTrace();
           }
           catch (InvocationTargetException e3) {
                e3.printStackTrace();
           }
           catch (IllegalAccessException e4) {
                e4.printStackTrace();
           }
           catch (InstantiationException e5) {
                e5.printStackTrace();
           }
               
       }
}



Voila, j'ai essayé de donner le maximum d'élément mais je ne sais pas si c'est assez pour que vous puissiez voir d'où vient le problème. Si c'est le cas, je donnerai plus de détails même si le code est assez lourd ...

Merci d'avance

Matthieu

2

Bon j'ai localisé le problème, l'exception InvocationTargetException est due à une autre exception java.lang.ClassCastException. Qui se lève sur cette ligne de code dans la fonction fonctionNbJourOuvre10H(Date d1, Date d2). La ligne est :

	
Date lo_dateCompteur;
lo_dateCompteur = lo_dateDebut;
Calendar compt = Calendar.getInstance();
compt.setTime(lo_dateCompteur);
compt.add(Calendar.DAY_OF_MONTH , 1);
lo_dateCompteur = (Date)compt.getTime(); // ici se lance l'exception ClassCastException


getTime() de la classe Calendar est censé renvoyer une Date ... Si je cast pas le compilateur me dit que les types sont incompatibles.

Que faire ?

3

ca veux dire que c'est pas les mêmes classes. Regarde le nom complet de la classe, avec le nom de pakage. Y'a java.util.Date, mais il existe aussi java.sql.Date
Faudrait que tu montres tes imports pour être sûr.

4

OK merci bcp, en gros j'avais mis un import java.sql.*; Donc toute les dates que je construisais étaient des dates sql, donc j'essayer de "caster" une date de java.util.Date par une date java.sql.Date

Merci de m'avoir fait remarquer ma bourde hibou.

A bientot