Отчет о яшме Java NullPointerException - PullRequest
1 голос
/ 30 апреля 2010

Я новичок в Java и столкнулся с этой проблемой, которую не могу понять. Я унаследовал этот проект, и у меня есть следующий код в одном из моих скриптлетов:

DefaultLogger.logMessage("DEBUG path: "+ reportFile.getPath());
DefaultLogger.logMessage("DEBUG parameters: "+ parameters);
DefaultLogger.logMessage("DEBUG jr: "+ jr);
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, jr);

И я получаю следующие результаты (четвертая строка - это строка 287 в FootwearReportsServlet.doGet):

DEBUG path: C:\Development\JavaWorkspaces\Workspace1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\RSLDevelopmentStandard\reports\templates\footwear\RslFootwearReport.jasper
DEBUG parameters: {class_list_subreport=net.sf.jasperreports.engine.JasperReport@b07af1, signature_path=images/logo_reports.jpg, submission_id=20070213154168780, test_results_subreport=net.sf.jasperreports.engine.JasperReport@5795ce, logo_path=images/logos_3.gif, report_connection_secondary=com.mysql.jdbc.JDBC4Connection@2c39d2, testing_packages_subreport=net.sf.jasperreports.engine.JasperReport@1883d5f, signature_path2=images/logo_reports.jpg, tpid_subreport=net.sf.jasperreports.engine.JasperReport@17531fd, first_page_subreport=net.sf.jasperreports.engine.JasperReport@12504e0}
DEBUG jr: net.sf.jasperreports.engine.data.JRMapCollectionDataSource@1630eb6
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, поэтому у меня возникают проблемы с выяснением этого.

Ответы [ 3 ]

4 голосов
/ 03 мая 2010

Из строки, в которой вы получаете сообщение об ошибке:

jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

В исходном коде JRFiller это соответствует

jasperPrint = filler.fill(parameters, dataSource);

Единственное, что может вызвать NullPointerException в этой строке случай, когда filler равен null.На этом этапе параметры не проверяются на null.

Глядя на код createFiller (строка 134), вы можете легко увидеть условие, при котором эта функция возвращает нулевой указатель.Так что, думаю, вы как-то забыли указать порядок печати (PRINT_ORDER_HORIZONTAL или PRINT_ORDER_VERTICAL).

1 голос
/ 05 июня 2014

Удалить заказ из всех ваших серий и категорий. Это исключит это исключение.

1 голос
/ 20 мая 2012

У меня та же проблема.

Роланд Иллиг прав, порядок печати отсутствует. Это может быть связано с тем, что в скомпилированном файле отчета отсутствуют обязательные поля.

Добавление значения в поле порядка печати впоследствии не помогает, оно просто продолжает сбой на следующей позиции, где отсутствует другое поле.

Используйте ту же версию компилятора (например, iReport) и вашу библиотеку времени выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...