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

Jasper Discussion :

Problème (simple?) de génération .jasper [Fait]


Sujet :

Jasper

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Problème (simple?) de génération .jasper
    Bonjour tout le monde.

    Dans le cadre d'un travail de fin d'études je découvre l'utilisation de JasperReport et iReport.

    Je rencontre cependant un petit problème de génération de .jasper. Avec iReport 2.0.3 j'ai créé un fichier .jrxml de test assez simple.

    Mon problème (assez bête je pense) est que je ne trouve pas le moyen de compiler ce .jrxml en .jasper pour pouvoir l'utiliser par la suite dans mon programme java.

    J'ai essayé l'outil " Créer >> Compiler " de iReport mais je ne vois pas le .jasper

    De même j'ai essayé les qques lignes de code suivantes dans mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    jasperDesign = JRXmlLoader.load("D:\\Ulg\\TFE\\facture.jrxml");
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
     
    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("numero", "00001");
     
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,  parameters);
     
    JasperExportManager.exportReportToPdfFile(jasperPrint, "D:\\Ulg\\TFE\\facture.pdf");
    En fait j'obtiens une page .pdf complètement blanche et toujours aucun .jasper à l'horizon.

    Merci d'avance pour une quelconque aide. Je découvre le forum et je suis assez bluffé par l'entraide que je découvre ici.

    Bonne journée à tous.

    Alex.

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Salut

    Normalement le .jasper est dans le « C:\Program Files\JasperSoft\iReport-2.0.3 » si tu n’a pas eu de message d’erreur lors de la compilation il est bien la

    Me concernant lorsque je compile je dépose mes fichiers jrxml dans un dossier que j’ai créé « C:\Program Files\JasperSoft\iReport-2.0.3\JRXML » mais les .jasper se déposent à la racine

    Aplus

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Salut

    Tout d'abord, merci de ta réponse. Tu avais bien raison. En fait, c'est Vista qui empechait la création du fichier dans le C: ... j'ai renommé le dossier par défaut et le .jasper a bien été créé

    Je suis maintenant confronté à un second problème =) Désolé c'est la première fois que je manipule ces librairies je rame un peu.


    J'essaie de charger et de remplir le .jasper mais je suis confronté à une NullPointerException =(

    Voici exactement la démarche effectuée:

    J'ai tout d'abord compilé le .jrxml en .jasper via iReport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Compilation vers le fichier... D:\Ulg\TFE\projet_cdc\src\report\facture.jasper -> C:\Program Files\JasperSoft\iReport-2.0.3\facture.java
    Durée de la compilation : 211
    Ensuite j'essaie de l'intégrer dans mon code comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Map<String, Object> parametres = new HashMap<String, Object>(0);
    parametres.put("numero","0001");
     
    JasperPrint jp = JasperFillManager.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);
    JasperViewer.viewReport(jp,true);
    Et j'aboutit à l'exception suivante :

    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
     
    Exception in thread "main" java.lang.NullPointerException
    	at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2264)
    	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2277)
    	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2748)
    	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
    	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
    	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
    	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:381)
    	at Cdc.main(Cdc.java:37)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
    Pourtant le path me semble correct.

    Merci à nouveau.

    Alex

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Désolé mais à ce stade je ne peux pas t’être d’une grande aide moi-même n’étant pas développeur à la base

    Me concernant j’ai eu de la chance j’ai repris bêtement le tutoriel dispo sur le site et ça marche !

    Bon courage

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci quand même

    Quelqu'un d'autre peut-être ?

    Alex.

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Salut,

    Voilà j’ai regardé ton bout de code et il ya un détail qui ma intriguer dans ton code tu charge le "fichier.jasper" or il faut mettre le fichier.jrxml j’ai essayé en mettant fichier.jasper j’obtiens exactement le même message d’erreur que toi!

    A mon avis pointe vers ton fichier jrxml et ça marchera beaucoup mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Map<String, Object> parametres = new HashMap<String, Object>(0);
    parametres.put("numero","0001");
     
    JasperPrint jp = JasperFillManager.fillReport(ClassLoader.getSystemResourceAsStream("D:\\@versTonJrxml\\facture.jrxml"),parametres);
    JasperViewer.viewReport(jp,true);
    Aplus

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse.

    J'ai essayé mais ça ne change rien =(

    Tu ne sais pas où je pourrais trouver un exemple simple de fonctionnement ? Avec .jrxml .jasper et code java ? (d'une facture si possible lol)

    Merci beaucoup de ton aide ça fait plaisir

    Alex.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Salut

    Dans ton code je lis ceci :
    JasperPrint jp = JasperFillManager.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);

    Or dans le tuto suivant : http://ericreboisson.developpez.com/...per-report/pdf

    je vois qu'il faut 3 arguments pour la méthodes fillReport :
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);

    Le premier c'est apparamment le résultat de la compilation du fichier jrxml donc c'est bien ce que tu as fait.
    Le second ce sont les paramètres qu'on envoit aux rapports je suppose (parce que franchement je ne vois pas ce qu'il envoit comme paramètre dans le tuto)
    Le dernier c'est la connexion.

    Toi, j'ai l'impression que tu n'envoies pas la connexion en argument. Or elle est nécessaire pour remplir le rapport avec les données.

    Au fait tu peux également compiler ton rapport directement dans le code java comme c'est illustrer dans le tuto.

    Sami

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci Sami.

    En fait, j'utilise une BD dans mon programme, mais je n'en ai pas vraiment besoin pendant la génération du rapport. C'est simplement au moment de l'enregistrement d'une nouvelle commande que je voudrais le générer.

    Je ne pense pas que l'utilisation d'une BD soit obligatoire. On ne peut pas simplement envoyer des paramètres ? En tout cas, une méthode sans connexion à une BD existe.

    Le but ultime est en fait d'envoyer une instance de DefaultTableModel pour que le rapport me génère une facture. Le DefaultTableModel contiendra alors les articles commandés.

    Personne n'a sous la main un petit exemple assez simple ?

    Merci du temps que vous consacrez à me répondre. Je n'en reviens toujours pas de la sympathie de ce forum =)

    Bonne nuit.

    Alex.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Salut Alex,

    J'ai fait des petites recherches et il me semble que la classe JRFiller contient la même méthode fillReport permettant de produire un document imprimable à partir du fichier compilé JasperReport et des paramètres, donc sans bases de données. Regardes :
    http://jasperreports.sourceforge.net...0java.util.Map)

    A priori si tu inclus net.sf.jasperreports.engine.fill.JRFiller ça pourrais marcher sans rien modifier d'autres.

    Sinon, le résultat étant un objet JasperPrint (http://jasperreports.sourceforge.net...llManager.html), j'en déduis que l'objet JasperFillManager instancie cette classe et utilise ses méthodes pour nous fournir le document imprimable. Si tu pouvais entrer dans le code de la méthode JasperFillManager.fillReport tu saurrais quelles sont les méthodes appelées et les utiliser directement dans ton programme pour créer ton rapport sans la base de données.

    Si j'ai bien compris ton problème, tu souhaites disposer d'un modèle de document (DefaultTableModel) avec possiblement des entêtes et des informations générales. Et à chaque fois qu'un client réalise une commande, une facture sera générée en remplissant ton modèle avec les coordonnées du client et les info de la commande. Et donc tu passerais les informations et le modèle en paramètres pour la réalisation de la facture.

    Sami

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    ohoh, il ne suffira surement d'inclure
    net.sf.jasperreports.engine.fill.JRFiller pour que ça marche.
    Il faut aussi utiliser un objet JRFiller sinon on a rien fait.

    Il faudrait donc en plus remplacer :
    JasperPrint jp = JasperFillManager.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);

    par :
    JasperPrint jp = JRFiller.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);

    et peut être aussi déclarer et créer l'objet JRFiller je sais pas.

    Sami

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Hello Sami,

    Désolé pour le délai j'ai eu un très long w-e.

    Ca ne marche toujours pas =( En fait, la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JRFiller.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);
    A besoin d'un objet JasperReport et non pas un InputStream et je ne sais pas comment obtenir cet objet JasperReport.

    Tu ne sais pas où je pourrais trouver un exemple simple ?

    Merci. Bonne journée.

    Alex

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je commence à me débrouiller avec Jasper.

    Merci à tous pour votre petit coup de pouce.

    Alex.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut objet JasperReport
    Salut quand même. Il y a déjà une année qui s'est écoulée depuis votre message néanmois
    essaie
    JasperReport jasperReport = (JasperReport)JRLoader.loadObject("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper");




    Citation Envoyé par Offstring Voir le message
    Hello Sami,

    Désolé pour le délai j'ai eu un très long w-e.

    Ca ne marche toujours pas =( En fait, la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JRFiller.fillReport(ClassLoader.getSystemResourceAsStream("D:\\Ulg\\TFE\\projet_cdc\\src\\report\\facture.jasper"),parametres);
    A besoin d'un objet JasperReport et non pas un InputStream et je ne sais pas comment obtenir cet objet JasperReport.

    Tu ne sais pas où je pourrais trouver un exemple simple ?

    Merci. Bonne journée.

    Alex

  15. #15
    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
    à ma connaissance mon article ici explique bien comment procéder, même si c'est plus ou moins dédié à une application web de type JSF

Discussions similaires

  1. Génération de page (problème simple ^^)
    Par openeyes dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2011, 05h41
  2. Problème simple de carte réseau
    Par Bayard dans le forum Matériel
    Réponses: 1
    Dernier message: 25/09/2006, 17h29
  3. Problème simple avec des checkbox
    Par nanor21 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 01h26
  4. [Javadoc]La Javadoc et un problème... simple mais paralysant
    Par lionrouge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/12/2005, 01h00
  5. Problème simple d'apostrophe qui m'ennerve !
    Par beletteroi dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/09/2005, 22h58

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