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

iReport Discussion :

Problème de NullPointerException lors de la desérialisation du jasper


Sujet :

iReport

  1. #1
    mbinte
    Invité(e)
    Par défaut Problème de NullPointerException lors de la desérialisation du jasper
    Bonjour,

    j'ai créé iReport un rapport contenant 3 sous-rapports. La source de données de se rapport est un bean.

    j'ai donc créé une classe MyBeanDataSource :

    public MyBeanDataSource extends JRAbstractBeanDataSource {
    public static Object createData() {return bean}
    }

    Les sources de données des 3 sous-rapports sont également des bean. Nous avons donc 3 classes :

    public MySubReportBeanDataSource1 extends JRAbstractBeanDataSource {
    public static List createCollection() {return list}
    }
    public MySubReportBeanDataSource2 extends JRAbstractBeanDataSource {
    public static List createCollection() {return list}
    }
    public MySubReportBeanDataSource3 extends JRAbstractBeanDataSource {
    public static List createCollection() {return list}
    }

    Lors de la création du rapport, j'ai déclaré les différents paramètres que je vais envoyer dans la Map params. Dedans on y retrouve nos 3 DataSource pour les sous-rapport. A la création des sous-rapport dans iReport, j'ai sélectionné dans la liste déroulante
    (cliquer sur le sous-rapport : propriété=>rapport secondaire) "Expression de connexion/source de donné" la valeur "Utiliser l'expression de source de donnée", puis je lui affecte la valeur du paramètre passé dans la Map params.

    public Edition {

    fillReport() {

    // Chargement du report
    URL urlReport = URL url = instance.getClass().getResource("report.jasper");
    URL urlSubReport1 = URL url = instance.getClass().getResource("sub_report1.jasper");
    URL urlSubReport2 = URL url = instance.getClass().getResource("sub_report2.jasper");
    URL urlSubReport3 = URL url = instance.getClass().getResource("sub_report3.jasper");

    //DataSource
    MyBeanDataSource ds_report = new MyBeanDataSource() ;
    MySubReportBeanDataSource1 ds_subReport1 = new MySubReportBeanDataSource1() ;
    MySubReportBeanDataSource2 ds_subReport2 = new MySubReportBeanDataSource2() ;
    MySubReportBeanDataSource3 ds_subReport3 = new MySubReportBeanDataSource3() ;

    // désérialisation du raport
    JasperReport jasperReport = (JasperReport)JRLoader.loadObject(urlRepport.getPath());

    Map params = new HashMap() ;
    params.put("SUBREPORT1", urlSubReport1.getPath()) ;
    params.put("SUBREPORT2", urlSubReport2.getPath()) ;
    params.put("SUBREPORT3", urlSubReport3.getPath()) ;
    params.put("DS_SUBREPORT1", ds_subReport1) ;
    params.put("DS_SUBREPORT2", ds_subReport1) ;
    params.put("DS_SUBREPORT3", ds_subReport1) ;

    JasperPrint print = JasperFillManager.fillReport(jasperReport, params, ds_report);
    return JasperExportManager.exportReportToPdf(print);
    }
    }

    Lorsque je teste le résultat j'obtiens un NullPointerException dans la classe JRPropertiesMap à l'appel de la méthode readObject qui désérialise l'objet report :

    Exception in thread "main" java.lang.NullPointerException
    at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)

    private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException
    {
    in.defaultReadObject();

    if (propertiesList == null)// an instance from an old version has been deserialized
    {
    //recreate the properties list and map
    propertiesList = new ArrayList(propertiesMap.keySet()); // LIGNE CAUSANT LE NULLPOINTEREXCEPTION !!!!!!
    propertiesMap = new HashMap(propertiesMap);
    }
    }

    J'ai l'impression qu'il y a eu un problème lors de la compilation du rapport sour iReport, et que dans le fichier jasper de sortie, la variable d'instance propertiesMap a été mal sérialisée. Mais je n'arrive pas à voir pourquoi.

    Si l'un d'entre vous peut me donner un coup de main, je l'en remercie d'avance car je suis à court d'idée.

    @+

  2. #2
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Bonjour,

    Que contient le propertiesMap.keySet()?

  3. #3
    mbinte
    Invité(e)
    Par défaut
    Justement je ne sais pas trop j'aimerai bien pouvoir l'identifier dans iReport. Est ce la map de paramètres que l'on passe ? Est ce les propriétés que l'on configure dans iReport ? Je ne suis pas expert dans cette technologie. Je l'est toujours utilisé de manière assez simple.

    Merci !

  4. #4
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Beh faut nous expliquer tout t'as eu ce code et nous expliquer un minimum des choses!!
    car je ne vois où et quand est ce que tu as initialisé l'objet dont je t'ai parlé

Discussions similaires

  1. problème de cache lors du chargement d'applet
    Par ellocin dans le forum Applets
    Réponses: 4
    Dernier message: 05/04/2007, 12h31
  2. [JDOM] Problème d'iterateur lors d'une suppression
    Par romuluslepunk dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/01/2006, 15h00
  3. Problème avec OpenEx lors d'un enregistrement
    Par jessy82 dans le forum MFC
    Réponses: 1
    Dernier message: 05/04/2005, 19h44
  4. Réponses: 9
    Dernier message: 04/03/2005, 13h58
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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