Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper > iReport
iReport Forum d'entraide sur iReport
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2008, 11h11   #1
Membre habitué
 
Inscription : mai 2008
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 60
Points : 127
Points : 127
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.

@+
mbinte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 17h42   #2
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Bonjour,

Que contient le propertiesMap.keySet()?
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 18h24   #3
Membre habitué
 
Inscription : mai 2008
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 60
Points : 127
Points : 127
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 !
mbinte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 18h58   #4
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
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é
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h35.


 
 
 
 
Partenaires

Hébergement Web