Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
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 30/04/2008, 16h41   #1
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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 :
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 :
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...
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 17h29   #2
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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.
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 16h49   #3
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
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
??
__________________
*** 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 06/05/2008, 10h47   #4
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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.
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 12h29   #5
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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 :
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 ?
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 13h33   #6
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 14h16   #7
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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 ?
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 14h35   #8
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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.
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 14h55   #9
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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...
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 15h24   #10
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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)
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 15h59   #11
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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...
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 16h03   #12
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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...
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 16h14   #13
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 16h31   #14
Invité régulier
 
Inscription : avril 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 20
Points : 6
Points : 6
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 !!
blop69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 16h46   #15
Membre habitué
 
Avatar de anayathefirst
 
Inscription : décembre 2006
Messages : 326
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 326
Points : 147
Points : 147
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 :
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)
anayathefirst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 17h02   #16
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
+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 :
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)
__________________
*** 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é Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h07.


 
 
 
 
Partenaires

Hébergement Web