【问题标题】:net.sf.jasperreports.engine.JRException: Error loading object from filenet.sf.jasperreports.engine.JRException:从文件加载对象时出错
【发布时间】:2013-03-06 14:53:08
【问题描述】:

我正在使用 jasper 为我的项目显示报告...实际上我正在尝试将参数动态传递给 jrxml 模板,正如我在下面给出的链接中看到的但我不能.....我的代码中似乎有问题错误是

        net.sf.jasperreports.engine.JRException: Error loading object from file : C:\Users\db2admin\Documents\NetBeansProjects\ConnectDB\src\sample_report.jrxml
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:115)
    at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:487)
    at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:874)
    at ConnectDB.main(ConnectDB.java:65)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298)
    at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:110)
    ... 3 more

碧玉sn-p是

ResultSet resultSet = statement.executeQuery("SELECT reg, name FROM students");
JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);          

JasperFillManager.fillReportToFile("C:\\Users\\db2admin\\Documents\\NetBeansProjects\\
             ConnectDB\\src\\sample_report.jrxml", null, resultSetDataSource);

xml代码终于出来了

<?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="sample_report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" uuid="b3b98795-b21f-4006-9295-5ef4248c84ea">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>

    <field name="name" class="java.lang.String"/>
    <field name="reg" class="java.lang.Integer"/>
    <columnHeader>
        <band height="28" splitType="Stretch">
            <staticText>
                <reportElement uuid="6d6bff96-6dcb-4188-bdc0-5c23b2614b05" key="staticText-1" x="40" y="11" width="196" height="15"/>
                <textElement/>
                <text><![CDATA[Name]]>
                </text>
            </staticText>
            <staticText>
                <reportElement uuid="c0267b29-e31b-4afd-a181-86bbcb4fb368" key="staticText-2" x="330" y="11" width="193" height="15"/>
                <textElement/>
                <text><![CDATA[Reg]]>
                </text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="27" splitType="Stretch">
            <textField>
                <reportElement uuid="4a1e6484-9610-421d-b4a4-f61d53458d9e" key="textField" x="47" y="6" width="173" height="18"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{name}]]>
                </textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="01cb3d91-74e7-4594-aca0-605d1aa203a8" key="textField" x="330" y="6" width="100" height="18"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{reg}]]>
                </textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

我推荐了这个网站 http://www.packtpub.com/article/creating-dynamic-reports-from-databases-jasperreports-3.5

请帮帮我!!!!

【问题讨论】:

  • 您使用的是什么版本的 JR API
  • 版本是4.7.1 兄弟!!!
  • 啊我明白了... JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet); JasperReport jasperReport = JasperCompileManager.compileReport("C:\\Users\\db2admin\\Documents\\NetBeansProjects\\ConnectDB\\src\\sample_report.jrxml"); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, resultSetDataSource); JasperViewer.viewReport(jasperPrint);

标签: java jasper-reports


【解决方案1】:

如果您在 ireport 中工作,请检查您的子报表是否引用了 .jasper 文件(而不是 jrxml)。

如果您将报告发布到 jasperreports-server,请记住,它会更改引用带有前缀的 jrxml 文件(但不是 jasper 文件)的报告定义。

【讨论】:

  • 这对我来说是个问题。处理服务器和本地之间的这些表达式更改非常烦人,真的希望@JasperSoft 能够修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多