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 de compilation de rapport, comment avoir plus de détail sur une JRException?


Sujet :

Jasper

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Problème de compilation de rapport, comment avoir plus de détail sur une JRException?
    Bonjour,

    je suis en train de tester JasperReports pour générer (pour commencer) un simple tableau avec le contenu d'une table de données.
    J'ai généré un modèle avec iReport puis j'ai édité le .jrxml pour avoir un tableau à 3 colonnes. Ci-dessous la partie qui semble poser problème :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <columnHeader>
    			<band height="25" isSplitAllowed="true" >
                                <rectangle>
                                    <reportElement x="0" y="0" width="500" height="25"/>
                                    <graphicElement/>
                                </rectangle>
                                <staticText>
                                    <reportElement x="5" y="5" width="50" height="15"/>
                                    <textElement/>
                                    <text><![CDATA[ID_ENTITE]]></text>
                                </staticText>
                                <staticText>
                                    <reportElement x="55" y="5" width="150" height="15"/>
                                    <text><![CDATA[ANNEE]]></text>
                                </staticText>
                                <staticText>
                                    <reportElement x="205" y="5" width="255" height="15"/>
                                    <text><![CDATA[TOTAL_BILAN]]></text>
                                </staticText>
    			</band>
    		</columnHeader>
    		<detail>
    			<band height="15" isSplitAllowed="true" >
                                <textField>
                                    <reportElement x="5" y="0" width="50" height="15"/>
                                    <textElement/>
                                    <textFieldExpression class="java.lang.Integer">
                                        <![CDATA[$F{ID_ENTITE}]]>
                                    </textFieldExpression>
                                </textField>
                                <textField>
                                    <reportElement x="55" y="0" width="150" height="15"/>
                                    <textElement/>
                                    <textFieldExpression class="java.lang.Integer">
                                        <![CDATA[$F{ANNEE}]]>
                                    </textFieldExpression>
                                </textField>
                                <textField>
                                    <reportElement x="205" y="0" width="255" height="15"/>
                                    <textElement/>
                                    <textFieldExpression class="java.lang.Double">
                                        <![CDATA[$F{TOTAL_BILAN}]]>
                                    </textFieldExpression>
                                </textField>
    			</band>
    		</detail>
    Lors de la compilation du rapport j'ai l'exception suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    net.sf.jasperreports.engine.JRException: Error compiling report java source files : D:\...\classic_1209562269197_67484.java
    Quelqu'un aurait une idée pour avoir plus de précision sur l'erreur qui provoque cette exception ?

    Merci d'avance...

  2. #2
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    salut,
    je dois t'avouer que je ne me suis jamais intéressé de très près au code xml généré par iReport, et je ne sais pas pourquoi tu veux y toucher !
    normalement, iReport permet de réaliser de façon graphique (avec sa belle interface) tous les types de rapports qu'on peut réaliser avec JasperReports. donc, je te propose d'oublier le code JasperReports et concentrer tes effort sur l'utilisation de iReports ^^.
    pour plus de détails ce tuto par exemple explique la création d'un rapport en utilisant l'interface de iReport pas à pas.

  3. #3
    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
    je rejoins @anayathefirst sur ses idées!
    sinon qu'et ce que tu entends dire par :
    Citation Envoyé par blop69 Voir le message
    J'ai généré un modèle avec iReport puis j'ai édité le .jrxml pour avoir un tableau à 3 colonnes
    ??

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    En fait j'ai utilisé iReport pour avoir un squelette de rapport, mais je n'avais pas connecté iReport à ma base Derby créée sous Netbeans pour pouvoir le générer facilement avec la bonne base.

    Donc j'essayais de modifier le fichier créé pour l'adapter à ma base derby.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bon j'ai repris la compilation à partir d'un rapport généré par iReport, sans modification, et j'ai toujours la même exception.

    Voici la pile d'erreurs complète :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    net.sf.jasperreports.engine.JRException: Error compiling report java source files : D:\[...]\classic_1210069567663_45774.java 
            at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:93)
            at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:67)
            at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:190)
            at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:219)
            at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:152)
            at etudebanquetest2.EtudeBanqueTest2View$CreateReportTask.doInBackground(EtudeBanqueTest2View.java:1797)
            at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: java.io.IOException: Cannot run program "javac": CreateProcess error=2, The system cannot find the file specified
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:466)
            at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:62)
            ... 12 more
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
            at java.lang.ProcessImpl.start(ProcessImpl.java:30)
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
            ... 15 more
    Qu'est-ce que ce "javac" qu'il ne trouve pas ? Un problème de librairie ?

  6. #6
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    questions con :
    ton JAVA_HOME est-il bien configuré ?
    as-tu configuré ton classpath ?
    as-tu mis toutes les librairies utiles à la compilation d'un rapport avec JasperReports dans ton classpath (jasperreports-2.0.2.jar commons-logging-1.0.2.jar commons-beanutils-1.7.jar commons-collections-2.1.jar commons-digester-1.7.jar itext_1.5.4.jar ) ?

    edit:J'ai oublié, as-tu la même erreur lorsque tu compiles avec iReport ?
    edit2: tu pourrais éventuellement utiliser d'autres versions pour les librairiesdu classpath

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Pour le JAVA_HOME, je n'y ai pas touché, j'ai supposé que l'install de NetBeans s'occuperait de ces détails.

    Pour le classpath dans NetBeans, j'ai déjà les librairies que tu mentionnes (sauf iText, mais après l'avoir ajouté ça ne change rien).

    Sinon, le rapport se compile normalement dans iReport.

    Any idea ?

  8. #8
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    si le rapport est compilé normalement sur iReport, le seul truc qui me viens à l'esprit, c'est un problème de classpath ou de JAVA_HOME (vérifie que ton JAVA_HOME est bien configuré dans les variables système et que ta version de JAVA est bien supérieure à 4.
    essaies aussi de compiler ton programme puis lances le en ligne de commande en spécifiant bien le classpath (ou bien si tu utilise un jar, met le classpath bien dans le manifest). des fois, NetBeans fait des choses bizarres.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Effectivement le JAVA_HOME n'était pas défini, mais cela ne change rien.
    Je l'ai défini à la valeur suivante :
    C:\Program Files\Java\jdk1.6.0_05
    Même problème avec
    C:\Program Files\Java\jdk1.6.0_05\bin
    où se trouve l'exécutable javac.exe

    Je commence à trouver ça louche...

    Edit : je précise que je lance le programme à partir de NetBeans...

  10. #10
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    moi aussi,
    quand tu génères le .jar, j'imagine qu'il te crée un dossier ./lib dans lequel, il y a toutes tes librairies, et un manifeste avec le bon classpath.
    lances le jar à l'extérieur de NetBeans et voies ce qu'il en est, lance le en ligne de commende pour avoir les erreurs sur la sortie standard (à moins que tu aies mis un système de log)

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par anayathefirst Voir le message
    moi aussi,
    quand tu génères le .jar, j'imagine qu'il te crée un dossier ./lib dans lequel, il y a toutes tes librairies, et un manifeste avec le bon classpath.
    En fait tu as mis le doigt sur quelque chose puisque je n'ai pas de dossier ./lib dans mon dossier "dist" où se situe mon .jar une fois le build réalisé.
    Le readme a l'air de dire que le dossier n'est pas créé si il y a autre chose que des .jar dans le dossier lib d'origine. Je vais investiguer...

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bon effectivement j'avais un pb de configuration de classpath, maintenant c'est bon j'ai un dossier lib avec ce qu'il faut à l'intérieur dans mon répertoire "dist".

    Par contre, toujours la même erreur du départ lors de la compilation du rapport...

  13. #13
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    alors, il faut bien séparer les étapes de compilation et de génération du rapport :
    La compilation se fait une seule fois dans la vie du rapport, elle génère un fichier du type monRapport.jasper. cette opération peut se faire dans tous les cas avec iReport, à moins que tu ne crées toi même une interface de création de rapports.
    une fois le rapport compilé, là, tu peux utiliser le fichier .jasper pour le "lancer", le "générer". c'est cette étape là que tu devras automatiser dans ton appli, tu n'auras jamais à compiler un rapport.
    le pied par contre, c'est d'utiliser JasperServer, il fait tout pour toi, il compile, il lance, et il automatise le traitement (exécution programmées, envoie de mail...). en plus tu peux le coupler avec iReport à l'aide d'un plgin ^^
    bon dev
    et n'oublies pas le tag

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Okay, admettons, j'ai pas vraiment besoin de générer le .jasper via mon appli.

    Je vais le marquer résolu même si je me demande bien encore d'où ça sort ?

    Merci !!

  15. #15
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    Tiens, voilà un vieil exemple que j'avais fais pour m'entrainer. Il permet de charger un fichier jasper et de l'exporter en pdf :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    import java.sql.Connection;
    import java.sql.DriverManager;
     
    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.util.JRLoader;
     
    public class PdfExport {
     
    	/**
             * Sets the database connection
             * 
             * @param databaseType
             *            holds database types, only oracle, mysql and postgreSQL are supported for the moment
             * @param connectionString
             *            holds database URL,
             * @param userName
             *            holds user name
             * @param password
             *            holds password to connect the database,
             * 
             * @return Returns the JDBC connection to the database
             */
    	public static Connection connectDB(String databaseType,
    			String connectionString, String userName, String password) {
    		Connection jdbcConnection = null;
    		String driverClassName = null;
    		try {
    			if (databaseType.equals("oracle"))
    				driverClassName = "oracle.jdbc.driver.OracleDriver";
    			else if (databaseType.equals("mysql"))
    				driverClassName = "com.mysql.jdbc.Driver";
    			else if (databaseType.equals("postgresl"))
    				driverClassName = "org.postgresql.Driver";
    			else {
    				System.out.println("Unkown database\n avalable databases are oracle/mysql/postgresql");
    				System.exit(1);
    			}
    			Class.forName(driverClassName);
    			jdbcConnection = DriverManager.getConnection(connectionString,userName, password);
    		} catch (Exception ex) {
    			String connectMsg = "Could not connect to the database: "+ ex.getMessage() + " " + ex.getLocalizedMessage();
    			System.out.println(connectMsg);
    		}
    		return jdbcConnection;
    	}
     
    	/**
             * connects to the database prepares and exports the report.
             * 
             * @param args
             *            Takes 6 arguments as an input: databaseName, userName,
             *            password, reportFileLocation <br/>
             *            args[0] holds database types,only oracle, mysql and postgreSQL are supported for the moment 
             *            args[1] holds database URL,<br/> 
             *            args[2] holds user name<br/> 
             *            args[3] holds password to connect the database,<br/>
             *            args[4] holds the location of the JasperReports compiled file (.jasper)<br/> 
             *            args[5] holds the location of the output file
             */
    	public static void main(String[] args) {
    		if (args.length == 6) {
    			String databaseType = args[0];
    			String connectionString = args[1];
    			String userName = args[2];
    			String password = args[3];
    			String reportFile = args[4];
    			String pdfOutput = args[5];
    			try {
    				System.out.println("loading report file from "+reportFile);
    				JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
    				System.out.println("Setting up connection ...");
    				Connection jdbcConnection = connectDB(databaseType, connectionString, userName, password);
    				System.out.println("filling the report object ...");
    				JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jdbcConnection);
    				System.out.println("exporting report ...");
    				JasperExportManager.exportReportToPdfFile(jasperPrint,pdfOutput);
    				System.out.println("Report exported to "+pdfOutput);
    				System.out.println("export successfull!");
    			} catch (Exception e) {
    				String connectMsg = "Could not create the report " + e.getMessage() + " " + e.getLocalizedMessage();
    				System.out.println(connectMsg);
    			}
    		} else {
    			System.out.println("Usage:");
    			System.out.println("java -jar pdfExport.jar connectionString connectionString userName password reportFileLocation pdfOutput");
    		}
    		return;
    	}
    }
    en fait, il ne faut pas compiler ton rapport à chaque fois car cela prend beaucoup de temps et de ressources, quand t'as beaucoup d'utilisateurs qui font appel à ton serveur, il risque de pas trop apprécier ^^
    en espérant que ça t'aidera
    @+
    PS. juste au cas où, pour récupérer les .jasper générés pas iReport, soit tu modifies les options pour les mettre dans un dossier en particulier, soit tu les chopes dans le répertoire d'installation de iReport
    bon courage pour la suite

    edit : je ne site pas mes source car je ne m'en rappelle pas, mais sachez que j'ai pompé quelques lignes de code par ci par là dans des tutos JasperReports pour le chargement et l'exportation ^^ (j'espère qu'ils ne m'en voudrons pas)

  16. #16
    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
    +1.
    Sinon il y a mon tuto qui explique comment éditer un fichier jasper ( sans passer par une compilation).

    Bon courage
    Citation Envoyé par anayathefirst Voir le message
    Tiens, voilà un vieil exemple que j'avais fais pour m'entrainer. Il permet de charger un fichier jasper et de l'exporter en pdf :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    import java.sql.Connection;
    import java.sql.DriverManager;
     
    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.util.JRLoader;
     
    public class PdfExport {
     
        /**
         * Sets the database connection
         * 
         * @param databaseType
         *            holds database types, only oracle, mysql and postgreSQL are supported for the moment
         * @param connectionString
         *            holds database URL,
         * @param userName
         *            holds user name
         * @param password
         *            holds password to connect the database,
         * 
         * @return Returns the JDBC connection to the database
         */
        public static Connection connectDB(String databaseType,
                String connectionString, String userName, String password) {
            Connection jdbcConnection = null;
            String driverClassName = null;
            try {
                if (databaseType.equals("oracle"))
                    driverClassName = "oracle.jdbc.driver.OracleDriver";
                else if (databaseType.equals("mysql"))
                    driverClassName = "com.mysql.jdbc.Driver";
                else if (databaseType.equals("postgresl"))
                    driverClassName = "org.postgresql.Driver";
                else {
                    System.out.println("Unkown database\n avalable databases are oracle/mysql/postgresql");
                    System.exit(1);
                }
                Class.forName(driverClassName);
                jdbcConnection = DriverManager.getConnection(connectionString,userName, password);
            } catch (Exception ex) {
                String connectMsg = "Could not connect to the database: "+ ex.getMessage() + " " + ex.getLocalizedMessage();
                System.out.println(connectMsg);
            }
            return jdbcConnection;
        }
     
        /**
         * connects to the database prepares and exports the report.
         * 
         * @param args
         *            Takes 6 arguments as an input: databaseName, userName,
         *            password, reportFileLocation <br/>
         *            args[0] holds database types,only oracle, mysql and postgreSQL are supported for the moment 
         *            args[1] holds database URL,<br/> 
         *            args[2] holds user name<br/> 
         *            args[3] holds password to connect the database,<br/>
         *            args[4] holds the location of the JasperReports compiled file (.jasper)<br/> 
         *            args[5] holds the location of the output file
         */
        public static void main(String[] args) {
            if (args.length == 6) {
                String databaseType = args[0];
                String connectionString = args[1];
                String userName = args[2];
                String password = args[3];
                String reportFile = args[4];
                String pdfOutput = args[5];
                try {
                    System.out.println("loading report file from "+reportFile);
                    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
                    System.out.println("Setting up connection ...");
                    Connection jdbcConnection = connectDB(databaseType, connectionString, userName, password);
                    System.out.println("filling the report object ...");
                    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jdbcConnection);
                    System.out.println("exporting report ...");
                    JasperExportManager.exportReportToPdfFile(jasperPrint,pdfOutput);
                    System.out.println("Report exported to "+pdfOutput);
                    System.out.println("export successfull!");
                } catch (Exception e) {
                    String connectMsg = "Could not create the report " + e.getMessage() + " " + e.getLocalizedMessage();
                    System.out.println(connectMsg);
                }
            } else {
                System.out.println("Usage:");
                System.out.println("java -jar pdfExport.jar connectionString connectionString userName password reportFileLocation pdfOutput");
            }
            return;
        }
    }
    en fait, il ne faut pas compiler ton rapport à chaque fois car cela prend beaucoup de temps et de ressources, quand t'as beaucoup d'utilisateurs qui font appel à ton serveur, il risque de pas trop apprécier ^^
    en espérant que ça t'aidera
    @+
    PS. juste au cas où, pour récupérer les .jasper générés pas iReport, soit tu modifies les options pour les mettre dans un dossier en particulier, soit tu les chopes dans le répertoire d'installation de iReport
    bon courage pour la suite

    edit : je ne site pas mes source car je ne m'en rappelle pas, mais sachez que j'ai pompé quelques lignes de code par ci par là dans des tutos JasperReports pour le chargement et l'exportation ^^ (j'espère qu'ils ne m'en voudrons pas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/07/2013, 15h49
  2. Réponses: 15
    Dernier message: 03/06/2010, 20h44
  3. Réponses: 4
    Dernier message: 06/10/2009, 17h44
  4. Réponses: 0
    Dernier message: 29/07/2008, 08h41
  5. Réponses: 3
    Dernier message: 04/11/2007, 19h55

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