gpt4 book ai didi

java - 编译报告java源文件时出错

转载 作者:行者123 更新时间:2023-12-04 06:23:56 25 4
gpt4 key购买 nike

我的问题是:我无法从 Java 编译我的报告。
好吧,我在 iReport 中创建了我的页面,并从我的 Java 代码中加载了它。

这是我的一些错误:

    5 juin 2011 19:45:47 org.apache.commons.digester.Digester error
GRAVE: Parse Error at line 3 column 408: Attribute "xmlns" must be declared for element type "jasperReport".
org.xml.sax.SAXParseException: Attribute "xmlns" must be declared for element type "jasperReport".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.addDTDDefaultAttrsAndValidate(XMLDTDValidator.java:1275)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1940)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1318)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
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 gestionstock.Recherche_commande.jButton2ActionPerformed(Recherche_commande.java:258)
at gestionstock.Recherche_commande.access$300(Recherche_commande.java:36)
at gestionstock.Recherche_commande$4.actionPerformed(Recherche_commande.java:151)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
5 juin 2011 19:45:47 gestionstock.Recherche_commande jButton2ActionPerformed

这是我的java代码:
String url = "jdbc:oracle:thin:@localhost:1521:gpsi";
String user = "gestion";
String passwd = "password";
Connection conn = null;

String reference = this.commande_reference.getText();

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, passwd);
Statement stmt = conn.createStatement();

JasperDesign jasperDesign = JRXmlLoader.load("./lib/report.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
Map parameters = new HashMap();

parameters.put("ref",reference);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);

net.sf.jasperreports.view.JasperViewer.viewReport(jasperPrint,false);
// - Création du rapport au format PDF
//JasperExportManager.exportReportToPdfFile(jasperPrint, "./lib/report.pdf");

JOptionPane.showMessageDialog(this , "Opération éffectuée avec succès!", "Terminé" , JOptionPane.INFORMATION_MESSAGE) ;

} catch (JRException ex) {
Logger.getLogger(Recherche_commande.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "erreur : Opération non effectuées " +
ex.getMessage() , "Avertissement", JOptionPane.ERROR_MESSAGE);
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(this, "erreur : Opération non effectuées " +
ex.getMessage() , "Avertissement", JOptionPane.ERROR_MESSAGE);
}finally {
try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}

最后这是我的 jrxml 文件,名为 report.jrxml:
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="ref" class="java.lang.String"/>
<queryString>
<![CDATA[SELECT
ASSOCIER."QUANTITE",
CLIENTS."CLIENTNOM",
PRODUITS."PRODUITNOM",
COMMANDES."REFERENCE",
COMMANDES."COMMANDEDATE",
CLIENTS."CLIENTPRENOM" AS CLIENTS_CLIENTPRENOM,
sum(PRODUITS.produitprix*ASSOCIER.quantite)
FROM
"COMMANDES" COMMANDES,
"EMPLOYES" EMPLOYES,
"CLIENTS" CLIENTS,
"PAIEMENTS" PAIEMENTS,
"ASSOCIER" ASSOCIER,
"PRODUITS" PRODUITS
WHERE
COMMANDES.employeid = EMPLOYES.employeid
and CLIENTS.clientid = COMMANDES.clientid
and COMMANDES.commandeid = PAIEMENTS.commandeid
and COMMANDES.commandeid = ASSOCIER.commandeid
and PRODUITS.produitid = ASSOCIER.produitid
and COMMANDES.reference = '$P!{ref}'
GROUP BY
PRODUITS.produitnom,
COMMANDES.reference,
CLIENTS.clientnom,
CLIENTS.clientprenom,
EMPLOYES.employenom,
COMMANDES.commandedate,
PAIEMENTS.paiementdate,
ASSOCIER.quantite]]>
</queryString>
<field name="QUANTITE" class="java.math.BigDecimal"/>
<field name="CLIENTNOM" class="java.lang.String"/>
<field name="PRODUITNOM" class="java.lang.String"/>
<field name="REFERENCE" class="java.lang.String"/>
<field name="COMMANDEDATE" class="java.sql.Timestamp"/>
<field name="CLIENTS_CLIENTPRENOM" class="java.lang.String"/>
<field name="SUM(PRODUITS.PRODUITPRIX*ASSOCIER.QUANTITE)" class="java.math.BigDecimal"/>
<group name="REFERENCE">
<groupExpression><![CDATA[$F{REFERENCE}]]></groupExpression>
</group>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="143" splitType="Stretch">
<staticText>
<reportElement x="183" y="25" width="222" height="92"/>
<textElement>
<font fontName="Andalus" size="60"/>
</textElement>
<text><![CDATA[Facture]]></text>
</staticText>
<line>
<reportElement x="15" y="121" width="527" height="1"/>
<graphicElement>
<pen lineWidth="2.0" lineStyle="Double"/>
</graphicElement>
</line>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch">
<staticText>
<reportElement x="17" y="7" width="100" height="20"/>
<textElement/>
<text><![CDATA[Reference :]]></text>
</staticText>
<staticText>
<reportElement x="310" y="9" width="100" height="20"/>
<textElement/>
<text><![CDATA[Date :]]></text>
</staticText>
<textField>
<reportElement mode="Transparent" x="127" y="7" width="100" height="20" backcolor="#FFFFFF"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{REFERENCE}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="423" y="7" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.sql.Timestamp"><![CDATA[$F{COMMANDEDATE}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch">
<staticText>
<reportElement x="17" y="10" width="100" height="20"/>
<textElement/>
<text><![CDATA[Nom de client :]]></text>
</staticText>
<textField>
<reportElement x="127" y="10" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{CLIENTNOM}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="307" y="10" width="100" height="20"/>
<textElement/>
<text><![CDATA[Prenom de client :]]></text>
</staticText>
<textField>
<reportElement x="423" y="10" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{CLIENTS_CLIENTPRENOM}]]></textFieldExpression>
</textField>
<line>
<reportElement x="-19" y="30" width="595" height="1" forecolor="#666666"/>
</line>
<staticText>
<reportElement mode="Opaque" x="323" y="41" width="143" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[SUM(PRODUITS.PRODUITPRIX*ASSOCIER.QUANTITE)]]></text>
</staticText>
<staticText>
<reportElement mode="Opaque" x="204" y="41" width="119" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[QUANTITE]]></text>
</staticText>
<staticText>
<reportElement mode="Opaque" x="73" y="41" width="131" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[PRODUITNOM]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="49" splitType="Stretch">
<textField>
<reportElement mode="Transparent" x="73" y="0" width="131" height="20" backcolor="#9999FF"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{PRODUITNOM}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="324" y="0" width="142" height="20"/>
<textElement/>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$F{SUM(PRODUITS.PRODUITPRIX*ASSOCIER.QUANTITE)}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="204" y="0" width="120" height="20"/>
<textElement/>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$F{QUANTITE}]]></textFieldExpression>
</textField>
<line>
<reportElement x="73" y="0" width="393" height="1"/>
</line>
<line>
<reportElement x="204" y="1" width="1" height="19"/>
</line>
</band>
</detail>
<pageFooter>
<band height="30" splitType="Stretch">
<textField>
<reportElement mode="Opaque" x="0" y="15" width="515" height="13" backcolor="#E6E6E6"/>
<textElement textAlignment="Right"/>
<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement mode="Opaque" x="515" y="15" width="40" height="13" backcolor="#E6E6E6"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField pattern="EEEEE dd MMMMM yyyy">
<reportElement x="0" y="15" width="100" height="13"/>
<textElement/>
<textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>

有关信息,我正在使用:
iReport3.4.7
jasperreports-1.2.1.jar
iText-2.1.7.jar
commons-logging-api-1.0.2.jar
commons-logging-1.0.2.jar
commons-digester-1.7.jar
commons-collections-2.1.jar
commons-beanutils-1.5.jar
groovy-all-1.5.5.jar

我会很感激的!!!

删除xmlns后,我有这个错误:
5 juin 2011 21:18:10 org.apache.commons.digester.Digester error
GRAVE: Parse Error at line 62 column 30: Attribute "splitType" must be declared for element type "band".
org.xml.sax.SAXParseException: Attribute "splitType" must be declared for element type "band".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)

最佳答案

不要同时使用 DTD 和 XML 模式,而应单独使用 DTD。换句话说,不是在您的 JRXML 文件中包含以下几行:

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">

你应该有:
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport>

更新

考虑到 iReport 3.4.7 被用于生成 JRXML 文件,用于对抗 JasperReports 1.2.1,很明显生成的 JRXML 文件不会被正确验证。因此,修复方法是使用兼容版本的 iReport 和 JasperReports。

关于java - 编译报告java源文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com