首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasper报告生成错误

Jasper报告生成错误
EN

Stack Overflow用户
提问于 2014-08-11 16:55:09
回答 3查看 3.9K关注 0票数 3

我在Jaspersoft Studio 5.1.0上设计了一个JRXML,能够在Eclipse和Windows机器上生成CSV格式的报告。当我将java代码导出到Unix服务器上时,出现以下错误。

Unix Server的Java版本:"1.7.0.08“

代码语言:javascript
复制
Caused by: java.lang.ExceptionInInitializerError
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:148)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:464)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:861)
        at com.infy.ui.mig.compare.MigrationUXAndONSCompare.GenerateReport(MigrationUXAndONSCompare.java:518)
        ... 2 more
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.io.IOException: Problem reading font data.
        at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:182)
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFace(SimpleFontExtensionHelper.java:364)
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:290)
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:254)
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:215)
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:184)
        at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:56)
        at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
        at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83)
        ... 11 more
Caused by: java.io.IOException: Problem reading font data.
        at java.awt.Font.createFont0(Font.java:999)
        at java.awt.Font.createFont(Font.java:876)
        at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:174)
        ... 19 more

Java代码:

代码语言:javascript
复制
JasperPrint jasperPrint;
            JasperReport jasperReport;
            HashMap jasperParams = new HashMap();

            InputStream input = new FileInputStream(jrxmlFile);
            JasperDesign design = JRXmlLoader.load(input);
            jasperReport = JasperCompileManager.compileReport(design);
            jasperReport.isIgnorePagination();
            Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(writeFileDir));

            jasperParams.put(jasperReport.isIgnorePagination(), Boolean.TRUE);
            jasperParams.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
            jasperPrint = JasperFillManager.fillReport(jasperReport, jasperParams);

            JRCsvExporter exporter = new JRCsvExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, csvReportName);
            exporter.exportReport();

JRXML文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="HCOTA_RTACOF" language="groovy" pageWidth="3500" pageHeight="4000" columnWidth="3460" columnSpacing="37" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true" uuid="b857e321-5d0f-4309-a5f5-950316db1f9d">
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="XmlDataSource_HRDM_ARD"/>
    <subDataset name="Dataset1" uuid="62525010-7a4a-47a7-b029-c7502b171ae9">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="field_name" class="java.lang.String">
            <fieldDescription><![CDATA[@name]]></fieldDescription>
        </field>
        <field name="group-name-ons" class="java.lang.String">
            <fieldDescription><![CDATA[field-type[@type = "ons"]/group-name]]></fieldDescription>
        </field>
        <field name="page-name-ons" class="java.lang.String">
            <fieldDescription><![CDATA[field-type[@type = "ons"]/page-name]]></fieldDescription>
        </field>
    </subDataset>
    <queryString language="XPath">
        <![CDATA[/menu-compare/field-details/fields]]>
    </queryString>
    <field name="field_exists" class="java.lang.String">
        <fieldDescription><![CDATA[@existence]]></fieldDescription>
    </field>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="82" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="120" splitType="Immediate">
            <printWhenExpression><![CDATA[$V{PAGE_NUMBER}==1]]></printWhenExpression>
            <textField>
                <reportElement uuid="78cd7b95-378a-47a7-a2e6-635677759067" x="10" y="60" width="70" height="30" backcolor="#FFFFFF"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Map Type"]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true">
                <reportElement uuid="a11ecb4a-06f1-400f-953f-e39edbcf3d9f" isPrintRepeatedValues="false" x="80" y="60" width="70" height="30"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Back End Field"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="40a166e8-1aa0-45e8-a10c-ecf61f6b2f5a" x="150" y="60" width="70" height="30"/>
                <textElement>
                    <font isBold="true" pdfFontName="Helvetica-Bold"/>
                </textElement>
                <textFieldExpression><![CDATA["Group Name"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="c19e0438-7cf9-499e-80d4-7e2f8caaa54b" x="220" y="60" width="70" height="30"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Page Name"]]></textFieldExpression>
            </textField>
        </band>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <componentElement>
                <reportElement uuid="f80aa2dd-1bdd-41fe-82f2-59b4e56d4b28" x="10" y="40" width="1760" height="60"/>
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Horizontal">
                    <datasetRun subDataset="Dataset1" uuid="c1fe8920-0512-41bc-9f79-8fcbc61ac067">
                        <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("/fields/field")]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="125" width="1760">
                        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                            <reportElement uuid="8d3ab036-d155-4f07-9345-dd37dd3f7101" x="70" y="15" width="70" height="30"/>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{field_name}]]></textFieldExpression>
                        </textField>
                        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                            <reportElement uuid="575757aa-2b24-446e-aa79-ea0c5eb02049" x="140" y="15" width="70" height="30"/>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{group-name-ons}]]></textFieldExpression>
                        </textField>
                        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                            <reportElement uuid="09512867-0754-4544-991f-8dd4ffc7d8c6" x="210" y="15" width="70" height="30"/>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{page-name-ons}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement uuid="fd3813e4-e26d-48ec-8519-c2c25780f48c" x="10" y="55" width="70" height="30"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{field_exists}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>
EN

回答 3

Stack Overflow用户

发布于 2014-08-11 20:45:06

我认为是pdfFontName="Helvetica-Bold"导致了这个问题。这里有两件事需要考虑。

  1. 当您导出报表并希望Helvetica-Bold出现在报表中时,除非您的JVM已经是Helvetica-Bold,否则需要为其创建font -
  2. 您必须在jrxml文件中创建自定义样式,并在其中使用字体,如果使用字体扩展,则将样式应用于元素。

希望这对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-08-11 16:59:50

正在查看您的异常堆栈跟踪...上面写着

代码语言:javascript
复制
Caused by: java.io.IOException: Problem reading font data.

可能在JRXML模板中使用的某些字体在您的应用程序中不可用

票数 0
EN

Stack Overflow用户

发布于 2015-05-17 02:35:29

从昨天开始,我一直在尝试解决类似的问题,最终找到了解决问题的方法(请参阅下面的链接)。这只发生在我们的QA环境中,而不是在我的本地桌面计算机上。

简而言之,该错误消息具有相当的误导性,实际问题是java.awt.Front not being able to write the Java-temp-directory (java.io.tmpdir),如以下原始答案中所述。我所要做的就是手动创建一个Tomcat临时目录(这是以前在QA环境中从未创建过的)。在那之后,它就开始正常工作。

Original answer that I found

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25239317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档