【问题标题】:How to solve this nullPointer Exception in jasper report?如何解决 jasper 报告中的这个 nullPointer 异常?
【发布时间】:2011-02-01 02:06:10
【问题描述】:

我是 jasper 报告的新手,我需要使用 BeanDatasource 和子报告创建 pdf 文档。 我参考以下博客“http://knol.google.com/k/jasper-reports-working-with-beans-and-sub-report#”。我完美地遵循了所有步骤。当我使用 IReport 运行报告时,我可以获得包含内容的 pdf 文档。但是当我们尝试从 java 程序创建时,我在以下行中遇到异常

第 110 行:" JasperFillManager.fillReportToFile("C:/JasperReports/contacts.jasper", parameters, new JRBeanCollectionDataSource(TestPerson.getBeanCollection())); "

这是我在 Eclipse 控制台窗口中遇到的以下错误。

java.lang.NullPointerException 在 net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.readArray(Unknown Source) 在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.readObject(Unknown Source) 在 net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88) 在 net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:257) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:308) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:257) 在 net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275) 在 net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1380) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:692) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:891) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:814) 在 net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) 在 test.TestJasperReport.main(TestJasperReport.java:110)

【问题讨论】:

  • 您能否将代码发布到 JasperFillManager.fillReportToFile("C:/JasperReports/contacts.jasper", parameters, new JRBeanCollectionDataSource(TestPerson.getBeanCollection())); "
  • 我在不同的上下文中重现了这个问题:JasperRunManager.runReportToPdf(myURL.openStream(), paramsMap, dataSource) 其中所有参数都是非空的,myURL.openStream() 是一个打开的 .jasper 文件。

标签: jasper-reports


【解决方案1】:

您传递给报告的属性中似乎有一个为空。

我建议在调试中单步执行您的代码。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,发现 iReports 进行了自动更新,并且它生成的文件不再与我的应用程序构建中引入的 Jasper 版本兼容。

    我通过确保我已下载最新的 iReports 和最新的 Jasper Reports 解决了这个问题。

    iReport v3.7.4 和 Jasper Reports v3.7.4。

    【讨论】:

    • 为我的应用程序中使用的所有 jars(这里是 itext、jasperreports、commons-loggins)升级到最新版本帮助了我并解决了我的问题。
    • 如何获取您正在使用的 iReport 版本的相关最新 jar?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多