Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impression de rapport avec Jasperreport

erreur incomprise

    9 août 2015 à 14:50:23

    J'essais d'imprimer un rapport avec ireport 
    les variables que j'incère depuis ma classe java  sont déclarés sur le jrxml  $F{nom} et $F{motif}.
     voilà mon code 
    package com.boris.dialog;
    
    import java.awt.Desktop;
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
    
    public class impression {
        String  chemin = System.getProperty("user.dir");
    
    	public impression(){
    		
    
    		// - Execution du rapport
            JasperPrint jasperPrint;
            String  chemin = System.getProperty("user.dir");
    
    		try {
    			//chargement du rapport
    			JasperDesign jasperDesign = JRXmlLoader.load(chemin+"\\resources\\report1.jrxml");
    	        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    	        // - Paramètres à envoyer au rapport
    	        Map parameters = new HashMap();
    	        parameters.put("nom", "bobo");
    	        parameters.put("motif", "dormir");
    			jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
    			  // - Création du rapport au format PDF
    	        JasperExportManager.exportReportToPdfFile(jasperPrint, chemin+"\\fiche.pdf");
    	      //- Affichage du document pdf avec Pdfreader par défaut
    	        Desktop d = Desktop.getDesktop();
    	         try {
    				d.open(new File(chemin+"\\ETAT_DATE.pdf"));
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    		} catch (JRException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
          
    	}
    
    }
    Mais je ne sais pas ce uqui ne marhe pas ! Eclipse m'envoi des erreurs que voici:
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap
    at net.sf.jasperreports.engine.util.JRSingletonCache.<init>(JRSingletonCache.java:53)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.<clinit>(JRXmlDigesterFactory.java:192)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
    at com.boris.dialog.impression.<init>(impression.java:30) 
    aidez moi svp . merci
    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2015 à 12:16:19

      Tu dois ajouté Apache commons collections dans ton classpath.
      • Partager sur Facebook
      • Partager sur Twitter
        10 août 2015 à 15:44:02

        voila celui que j'ai trouvé mais je suis largué http://commons.apache.org/downloads/
        • Partager sur Facebook
        • Partager sur Twitter
          10 août 2015 à 15:45:39

          Merci d'éviter les double posts en l'espace de 12h. Il est demandé de modifier ton dernier message si tu as une précision à apporté.

          Qu'est ce qui te bloque?

          • Partager sur Facebook
          • Partager sur Twitter
            10 août 2015 à 16:52:41

            ok

            compris , ce que je veux c'est un lien pour télécharger le fichier que je dois ajouter à mes classpath, et au même moment si vous pouvez m'aidez à comprendre moi meme les erreurs ce serait bien .merci d'avance:) et comment aire aussi pour avoir avec jasperreport un tableau comme celui en bas

            ou les éléments des colonnes seront progressivement rempli par ma classe java.merci svp

            -
            Edité par TBoris 10 août 2015 à 17:37:02

            • Partager sur Facebook
            • Partager sur Twitter
              10 août 2015 à 17:54:56

              Voici le lien pour le téléchargement: https://commons.apache.org/proper/commons-collections/download_collections.cgi

              Prenez le commons-collections4-4.0-bin.zip

              • Partager sur Facebook
              • Partager sur Twitter
                10 août 2015 à 17:58:06

                et pour mon chèr tableau:'( en plus le problème persiste... les erreurs reviennent malgré que j'ai ajouté mes jar au classpath.voici les nouvelles erreurs:

                Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory

                at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207)

                at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)

                at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)

                at com.boris.dialog.impression.<init>(impression.java:30)

                -
                Edité par TBoris 10 août 2015 à 18:59:22

                • Partager sur Facebook
                • Partager sur Twitter
                  10 août 2015 à 20:18:04

                  Vous essayez d'importer quoi? Un .rxml ou un .jasper?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 août 2015 à 12:00:11

                    Tu dois d'abord compiler ton jrxml via Ireport pour obtenir un .jasper.

                    Vu l'erreur, la compilation ne fonctionnera pas, mais IReport te donnera un message d'erreur bcp plus explicte

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 août 2015 à 12:22:28

                      Mais j'arrive à obtenir un fichier .jaser il est dans le même dosier que mon jrxml . dois je l'utiliser directement?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 août 2015 à 16:18:14

                        Avec quelle méthode , la classe jrxmloader toujour ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 août 2015 à 11:31:44

                          Tu as essayé Google? Voici le premier résultat avec la recherche "jasperreport load jasper file" http://community.jaspersoft.com/questions/527132/how-load-jasper-instead-jrxml
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 août 2015 à 16:26:54

                            non? je sui confu..voila les nouvelles erreurs

                            Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

                            at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)

                            at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)

                            at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)

                            at java.io.ObjectInputStream.readStreamHeader(Unknown Source)

                            at java.io.ObjectInputStream.<init>(Unknown Source)

                            at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)

                            at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:243)

                            at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:228)

                            at com.boris.dialog.impression.<init>(impression.java:31)

                            voila mon nouveua code :'(:

                            public impression(){
                            		
                            
                            		// - Execution du rapport
                                    JasperPrint jasperPrint;
                                    String  chemin = System.getProperty("user.dir");
                            
                            		try {
                            			//chargement du rapport
                            		//	JasperDesign jasperDesign = JRXmlLoader.load(chemin+"\\resources\\report1.jrxml");
                            			InputStream jasperStream = getClass().getResourceAsStream("/resource/report1.jasper");
                            			JasperReport jasReport=(JasperReport) JRLoader.loadObject(jasperStream);
                            	     //   JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
                            	        // - Paramètres à envoyer au rapport
                            	        Map parameters = new HashMap();
                            	        parameters.put("nom", "bobo");
                            	        parameters.put("motif", "dormir");
                            			jasperPrint = JasperFillManager.fillReport(jasReport, parameters);
                            			  // - Création du rapport au format PDF
                            	        JasperExportManager.exportReportToPdfFile(jasperPrint, chemin+"\\fiche.pdf");
                            	      //- Affichage du document pdf avec Pdfreader par défaut
                            	        Desktop d = Desktop.getDesktop();
                            	         try {
                            				d.open(new File(chemin+"\\ETAT_DATE.pdf"));
                            			} catch (IOException e) {
                            				// TODO Auto-generated catch block
                            				e.printStackTrace();
                            			}
                            
                            		} catch (JRException e) {
                            			// TODO Auto-generated catch block
                            			e.printStackTrace();
                            		}
                            
                                  
                            	}



                            -
                            Edité par TBoris 13 août 2015 à 17:54:17

                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 août 2015 à 8:54:15

                              InputStream jasperStream = getClass().getResourceAsStream("/resource/report1.jasper");

                              Le chemin d'accès du fichier n'est pas bon.

                              Il se trouve où dans ton projet?

                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 août 2015 à 10:18:21

                                Dans mon repertoire de mon projet et dans le dossier resource.merci d'avance
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 août 2015 à 11:06:20

                                  Tu as essayé ça du coup? InputStream jasperStream = getClass().getResourceAsStream("report1.jasper");

                                  Si ça ne fonctionne toujours pas, pourrais-tu me dire si ton dossier resource fait bien partie de ton classpath?

                                  En passant, la norme veut que le répertoire de ressources soit nommé "resources"

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 août 2015 à 11:48:57

                                    J'ai déplacé mon dossier resources que j'ai mis dans le dossier src et j'éxécute à nouveau avec ce code 
                                    InputStream jasperStream = getClass().getResourceAsStream("/resources/report1.jasper"); JasperReport jasReport=(JasperReport) JRLoader.loadObject(jasperStream);  

                                    voila les nouvelles erreurs:

                                    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

                                    at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)

                                    at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)

                                    at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)

                                    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)

                                    at java.io.ObjectInputStream.<init>(Unknown Source)

                                    at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)

                                    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:243)

                                    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:228)

                                    at com.boris.dialog.impression.<init>(impression.java:31)

                                    A ce qu'il parrait c'est la deuxième ligne qui pose problème ? :

                                    JasperReport jasReport=(JasperReport) JRLoader.loadObject(jasperStream);



                                    -
                                    Edité par TBoris 14 août 2015 à 11:53:20

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 août 2015 à 12:27:46

                                      Est-ce que jasperStream  est null? Je suppose que oui..
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 août 2015 à 12:42:39

                                        je ne comprends pas la question. stp
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 août 2015 à 13:25:05

                                          Est-ce qu'à cette ligne là : JasperReport jasReport=(JasperReport) JRLoader.loadObject(jasperStream);

                                          l'objet "jasperStream" est null?

                                          Qu'obtiens-tu si tu copies-colles System.out.println(jasperStream) juste au dessus de cette ligne?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 août 2015 à 16:31:23

                                            Cela renvoi: 

                                            java.io.BufferedInputStream@e94c62

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              15 août 2015 à 6:29:16

                                              Je te propose de m'envoyer ton projet par e-mail pour que j'y jette un oeil. 

                                              Je posterais la réponse sur le forum pour le partager avec tout le monde.

                                              Si tu es d'accord, contact moi par MP

                                              -
                                              Edité par max-om-93 15 août 2015 à 6:29:27

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                17 août 2015 à 9:26:29

                                                OK . je vais le faire tout de suite.. peux tu m'envoyer le email..merci
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  25 août 2015 à 16:31:23

                                                  Aidez moi svp .. mon projet est bloqué
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Impression de rapport avec Jasperreport

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                  • Editeur
                                                  • Markdown