Java 使用JRTextExporter导出jasperreport时ArrayOutOfBoundException

Java 使用JRTextExporter导出jasperreport时ArrayOutOfBoundException,java,jasper-reports,Java,Jasper Reports,我使用jasper reports library将一些jasper报告添加到我的java web应用程序中,报告本身很好,但是当我尝试使用下面的代码从应用程序中导出它时,问题就出现了 JasperPrint jasperPrint; try { //get the database connection Connection connection = dataSource.getConnection(); FileInputStream fin = new Fi

我使用jasper reports library将一些jasper报告添加到我的java web应用程序中,报告本身很好,但是当我尝试使用下面的代码从应用程序中导出它时,问题就出现了

    JasperPrint jasperPrint;
try {
    //get the database connection
    Connection connection = dataSource.getConnection();
    FileInputStream fin = new FileInputStream(report_path);
    ObjectInputStream ois = new ObjectInputStream(fin);
    jasperReport = (JasperReport) ois.readObject();
    ois.close();
    //get report result
    jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
    connection.close();
    if (jasperPrint.getPages().size() > 0) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JRExporter exporter;
        exporter = new JRTextExporter();
        exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT,19f);
        exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH,7f);
        exporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT,"");
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
        exporter.exportReport();
    }
}
catch (Exception e) {
    e.printStackTrace();
}
尝试导出报告时出现以下错误

java.lang.ArrayIndexOutOfBoundsException: 12
at net.sf.jasperreports.engine.export.JRTextExporter.exportText(JRTextExporter.java:614)
at net.sf.jasperreports.engine.export.JRTextExporter.exportElements(JRTextExporter.java:392)
at net.sf.jasperreports.engine.export.JRTextExporter.exportPage(JRTextExporter.java:369)
at net.sf.jasperreports.engine.export.JRTextExporter.exportReportToWriter(JRTextExporter.java:345)
at net.sf.jasperreports.engine.export.JRTextExporter.exportReport(JRTextExporter.java:194)
导致错误的行是这一行
exporter.exportReport()

奇怪的是,当我选择任何其他格式时,代码运行良好,我得到了报告,同样对于
text
format,如果数据少于5行,报告将成功导出。我搜索了这个,发现它是jasperreports库中的一个bug,应该在版本
2.2.1
中修复,我想,我使用的是jasperreports库版本
5.5.1
我也使用了版本
2.2.1
6.x
,但问题仍然存在。
这似乎和页面的宽度和高度有关,但我不知道如何解决它。这是我报告的第一行

<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="report1" language="groovy" printOrder="Horizontal" pageWidth="1875" pageHeight="40" orientation="Landscape" columnWidth="1875" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isIgnorePagination="true" uuid="b8c06aba-6b16-4020-8a9e-574d630cdbae">

我还注意到,当我设置
isIgnorePagination=“false”
时,问题就出现了,但我不希望在报告末尾出现空行。

请帮助,让我知道错误的原因和修复方法(如果有)。

我如何解决与Japser文本导出器相同的问题,问题如下所示

我使用的是子报告,其中的标签如下所示,带有xy负值,因为在设计模式下对齐时,必须将其放置在边界之外,以获得与主报告正确对齐的报告


在我的例子中,JasperReport的4.5.1版出现了这个问题

我使用子报表生成TXT文件


要修复此问题,必须在所有子报告中使用相同的带宽和文本字段宽度。在我的示例中,带宽15的宽度和文本字段14的宽度。

试试。。。if()中的jasperPrint.getPages().size()-1这可能是jasper报表中的一个错误,请注意,在使用JRTextExporter时,通常假定您也使用忽略分页(因为您只是生成报表的文本输出)。我们无法重现错误,因为我们需要相同的数据源等。您可以生成一个报告并编辑您的问题,但最好将此直接提交给jasper report,因为我还找到了相关链接