JasperReport java.util.NoSuchElementException

JasperReport java.util.NoSuchElementException,java,jasper-reports,Java,Jasper Reports,我有一个奇怪的问题。我有一份包含大量数据的报告。当我按特定日期或短范围日期请求报告时,报告显示正常,但当我按大范围请求报告时,此异常引发:java.util.NoSuchElementException 我认为可能是数据源(XML),但当我将数据源更改为JSON时,问题仍然存在。有什么想法吗 PD:当我在iReport上运行报告时,一切都正常( JasperReports版本是5.6.0 JavaJDK7 完全例外: java.util.NoSuchElementException at jav

我有一个奇怪的问题。我有一份包含大量数据的报告。当我按特定日期或短范围日期请求报告时,报告显示正常,但当我按大范围请求报告时,此异常引发:
java.util.NoSuchElementException

我认为可能是数据源(XML),但当我将数据源更改为JSON时,问题仍然存在。有什么想法吗

PD:当我在iReport上运行报告时,一切都正常(

JasperReports版本是5.6.0
JavaJDK7

完全例外:

java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(Unknown Source)
at net.sf.jasperreports.engine.fill.JRPrintBand$ElementsIterator.next(JRPrintBand.java:151)
at net.sf.jasperreports.engine.fill.JRPrintBand$ElementsIterator.next(JRPrintBand.java:1)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBand(JRVerticalFiller.java:2136)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2090)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:788)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:298)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:152)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:892)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:584)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:930)
at ibusplus.com.reportRequest.clases.ReportExport.getJasperPrint(ReportExport.java:208)
at ibusplus.com.reportRequest.clases.ReportExport.getJasperPrint(ReportExport.java:192)
at ibusplus.com.reportRequest.clases.ReportExport.getURLReport(ReportExport.java:274)
at org.apache.jsp.reportGenerator_jsp._jspService(reportGenerator_jsp.java:151)

我真的希望我能问你一些问题,但我的低声誉分数阻止了这一点。但由于已经两个小时了,你没有收到任何回应,我将冒冒犯其他成员的风险,提出以下建议:

可能存在一些格式错误的XML,只有在处理“大”文件时才会读取。在所有运行的小文件(或大文件的一小部分)中,您都幸运地没有遇到坏数据。我将执行以下操作之一(或全部):

  • 分而治之。只处理大文件的前半部分。如果成功,只处理大文件的后半部分。这可能会失败。然后像以前一样将这后半部分一分为二。最终,你会缩小格式不正确的一小块大数据。一旦你发现了这一点,请检查整个文件是否存在类似的错误事件

  • 如果有一个描述XML的DTD或XSD,我将完全在任何Jasper代码或流程之外根据这个DTD或XSD验证整个XML文件

  • 如果没有DTD或XSD,那么我将使用XSD生成工具生成XSD(您可以使用Microsoft的XSD.exe,它包含在Windows操作系统中--只需查找)。这将从实际的XML生成XSD。一旦获得XSD,请查看是否有任何意外元素。例如,您可能有一个名为
    Invoices
    的元素,您很熟悉。如果您看到
    Invioces
    (切换i和o)的元素定义,您可能已经找到了罪魁祸首

  • 另外,请参阅。在本文中,我建议在Datasource对象周围使用一个包装器,以便您可以看到Jasper正在实时检索什么


  • 感谢您的回复。我意识到,当我删除细节栏的任何字段时,报告会毫无问题地显示:这让我更加困惑,因为细节栏上可能存在字段限制:(你知道一些关于jasper reports的信息,我真的需要帮助。再次感谢你的回答。我将尝试实践以下问题:异常与你的.jrxml文件有关,而不是与作为报告输入的庞大XML文件有关?可能报告定义指的是报告定义中缺少的元素(或拼写不相同)。你认为这会引发java.util.NoSuchElementException吗?因为迭代器上没有下一个元素时会引发异常。我验证了xml文件输入,一切正常。我不知道发生了什么。不对。仔细检查你的堆栈后,我认为这是我的错误建议。我从堆栈中看到rt是作为web调用的一部分生成的,您提到从iReports运行报告时工作正常。这是一个线索,因为代码不同(尽管有些代码可能很常见)。Apache调用的Jasper LIB是否与libs iReports使用的版本相同?您是否在任何地方使用最新版本的LIB?如果Apache具有较旧的LIB,请尝试用最新版本替换它们。