Bonjour,

J'ai un problème avec Jasper Report.

Voici mon code

Main.java
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);
 }
}
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
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>
et l'erreur à l'exécution :
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".
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

J'utilise NetBeans.

Merci d'avance pour votre aide.