Java jasper报告空指针异常
我是新来的Java,我遇到了这个问题,我无法弄清楚。我继承了这个项目,我有下面的代码在我的小脚本之一:Java jasper报告空指针异常
DefaultLogger.logMessage("DEBUG path: "+ reportFile.getPath());
DefaultLogger.logMessage("DEBUG parameters: "+ parameters);
DefaultLogger.logMessage("DEBUG jr: "+ jr);
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, jr);
而且我得到的结果如下(第四行存在FootwearReportsServlet.doGet线287):
DEBUG path: C:\Development\JavaWorkspaces\Workspace1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\RSLDevelopmentStandard\reports\templates\footwear\RslFootwearReport.jasper
DEBUG parameters: {[email protected]7af1, signature_path=images/logo_reports.jpg, submission_id=20070213154168780, [email protected]5795ce, logo_path=images/logos_3.gif, [email protected]2, test[email protected]1883d5f, signature_path2=images/logo_reports.jpg, [email protected], [email protected]504e0}
DEBUG jr: [email protected]b6
Apr 29, 2010 4:15:13 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet FootwearReportsServlet threw exception
java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:385)
at com.rsl.reports.FootwearReportsServlet.doGet(FootwearReportsServlet.java:287)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
我无法弄清楚什么是空引用。从调试行我可以看到每个参数都有一个值。它是否指的是其中一幅图像的坏路径?有任何想法吗?出于某种原因,我的服务器无法在Eclipse中以调试模式启动,所以我无法解决这个问题。
从看你在哪里得到的错误行:
jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
在它对应于
jasperPrint = filler.fill(parameters, dataSource);
唯一的JRFiller源代码,可导致NullPointerException
在这条线是当filler
是null
的情况。此时不检查参数null
。
查看createFiller
(第134行)的代码,您可以轻松看到该函数返回空指针的条件。所以我想你忘了指定打印顺序(PRINT_ORDER_HORIZONTAL
或PRINT_ORDER_VERTICAL
)。
优秀!我正在浏览API /文档以尝试找到设置打印顺序的方法... – Daniel 2011-02-18 22:47:10
我有同样的问题。
Roland Illig是对的,打印命令丢失。这可能是因为编译的报告文件缺少必填字段。
事后添加一个值到打印指令字段并没有帮助,它只是在下一个丢失另一个字段的位置崩溃。
使用相同版本的编译器(例如iReport)和您的运行时库。
我遇到了同样的问题。刚注意到我用了不同的版本来编译和运行。让他们同样解决了我的问题。谢谢 ! – bkrish 2015-07-30 18:56:41
删除所有系列和类别的订单。 它将删除此异常。
哪个JasperReports的版本是?查看该版本的确切源代码文件非常有用。 – doublep 2010-04-29 23:31:16
最有可能是这样的:http://grepcode.com/file/repo1.maven.org/maven2/jasperreports/jasperreports/3.1.0/net/sf/jasperreports/engine/fill/JRFiller.java – MeBigFatGuy 2010-04-30 04:05:28
你可以发布如何你正在创建数据源“jr”? – Gordon 2010-04-30 20:10:50