Bonjour,
J'ai un problème avec Jasper Report.
Voici mon code
Main.java
ReportTemplate.jrxml
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 package testing; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.view.JasperViewer; /** * * @author mohdfaizal */ public class Main extends JFrame implements ActionListener { // private Logger logger = Logger.getLogger(Main.class); private JTextField txtFirstname = new JTextField(20); private JButton submitButton = new JButton("Submit"); public Main() { init(); } private void init() { Container conn = getContentPane(); conn.setLayout(new FlowLayout()); conn.add(new JLabel("Search by First Name: ")); conn.add(txtFirstname); conn.add(submitButton); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); submitButton.addActionListener(this); pack(); } public void actionPerformed(ActionEvent e) { if (e.getSource().equals(submitButton)) { Connection connection = null; JasperReport jasperReport = null; JasperPrint jasperPrint = null; try { // get search input String parameterName = txtFirstname.getText(); String reportSource = "src/testing/Reports/ReportTemplate.jrxml"; // set parameters Map map = new HashMap(); map.put("param", parameterName); // establish database connection Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost/test", "test", "test"); // compile report jasperReport = (JasperReport) JasperCompileManager.compileReport(reportSource); jasperPrint = JasperFillManager.fillReport(jasperReport, map, connection); //close connection connection.close(); //view report to UI JasperViewer.viewReport(jasperPrint, false); } catch (Exception ex) { // exception handling // logger.error(ex.getMessage(), ex); System.err.println(ex.getMessage()); } } } public static void main(String[] args) { new Main().setVisible(true); } }
et l'erreur à l'exécution :
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 <?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="ReportTemplate" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <property name="ireport.zoom" value="1.5"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <parameter name="param" class="java.lang.String"/> <queryString> <![CDATA[ SELECT id, firstname, lastname, address, email FROM jasper_users WHERE firstname LIKE $P{param}]]> </queryString> <field name="id" class="java.lang.Integer"/> <field name="firstname" class="java.lang.String"/> <field name="lastname" class="java.lang.String"/> <field name="address" class="java.lang.String"/> <field name="email" class="java.lang.String"/> <background> <band splitType="Stretch"/> </background> <title> <band height="56" splitType="Stretch"> <staticText> <reportElement x="0" y="0" width="555" height="46"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font size="22" isBold="true"/> </textElement> <text><![CDATA[Jasper Reports Demo]]></text> </staticText> </band> </title> <pageHeader> <band height="13" splitType="Stretch"/> </pageHeader> <columnHeader> <band height="25" splitType="Stretch"> <staticText> <reportElement x="50" y="0" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[First Name]]></text> </staticText> <staticText> <reportElement x="161" y="0" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[Last Name]]></text> </staticText> <staticText> <reportElement x="274" y="0" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[Address]]></text> </staticText> <staticText> <reportElement x="395" y="0" width="149" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[E-mail]]></text> </staticText> <staticText> <reportElement x="10" y="0" width="27" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[ID]]></text> </staticText> </band> </columnHeader> <detail> <band height="25" splitType="Stretch"> <textField> <reportElement x="50" y="0" width="100" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{firstname}]]></textFieldExpression> </textField> <textField> <reportElement x="161" y="0" width="100" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{lastname}]]></textFieldExpression> </textField> <textField> <reportElement x="274" y="0" width="100" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{address}]]></textFieldExpression> </textField> <textField> <reportElement x="395" y="0" width="149" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$F{email}]]></textFieldExpression> </textField> <textField> <reportElement x="10" y="0" width="27" height="20"/> <textElement/> <textFieldExpression class="java.lang.Integer"><![CDATA[$F{id}]]></textFieldExpression> </textField> </band> </detail> <columnFooter> <band splitType="Stretch"/> </columnFooter> <pageFooter> <band height="23" splitType="Stretch"/> </pageFooter> <summary> <band splitType="Stretch"/> </summary> </jasperReport>
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?août 31, 2013 2:17:42 PM org.apache.commons.digester.Digester error
Grave: Parse Error at line 2 column 415: L'élément racine de document "jasperReport" doit correspondre à la racine DOCTYPE "null".
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 415; L'élément racine de document "jasperReport" doit correspondre à la racine DOCTYPE "null".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1599)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1877)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:742)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1322)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1275)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3063)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:881)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
at org.apache.commons.digester.Digester.parse(Digester.java:1647)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:238)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:225)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:213)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:167)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:151)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:142)
at testing.Main.actionPerformed(Main.java:78)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
L'élément racine de document "jasperReport" doit correspondre à la racine DOCTYPE "null".
J'utilise NetBeans.
Merci d'avance pour votre aide.
Partager