Почему я получаю java.lang.NullPointerException в java.lang.Class.isAssignableFrom (собственный метод) при вызове JasperFillManager? - PullRequest
8 голосов
/ 15 октября 2011

JasperFillManager генерирует исключение нулевого указателя, когда я передаю sql-соединение в своем параметре, но он работает нормально, когда я передаю JRResultSetDatasource.

java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:609)
at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)
at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205)
at java.lang.Thread.run(Unknown Source)

когда я передаю соединение в fillReport, оно выдает исключение.

jasperPrint = JasperFillManager.fillReport(jasperReport, map, reportConnection);

Я также использую подотчет, поэтому я не использую JRResultSetDatasource и не использую соединение. Я просто застрял в этом примечании, что, когда я передаю JRResultSetDatasource, он работает нормально, а когда я также передаю объект подключения в параметре HasMap, он выдает ту же ошибку, что и выше.

Ответы [ 4 ]

9 голосов
/ 31 октября 2011

Я только что исправил это две минуты назад, обновляя мой jar-файл iReport до последней версии

4 голосов
/ 19 декабря 2011

Ваш jasper-конструктор и jar в вашем проекте должны быть одной и той же версии.

2 голосов
/ 24 декабря 2012

Файлы Jar в папке lib проектов должны соответствовать версии iReport У меня была такая же проблема, и она была решена с помощью правильных файлов JAR. Вы можете взглянуть на ссылку ниже: http://sourceforge.net/projects/jasperreports/files/jasperreports/

1 голос
/ 28 мая 2013

Нет проблем заменить старый .jar на новый .jar. Если у вас есть возможность. Предположим, вам нужно сохранить старую банку, но она должна работать. Пожалуйста, используйте это.

Следующий код работает в более высокой версии [Пример: 4.1.1], а не в более старой версии [Пример: 3.7.6].

 <subreport>
       <reportElement positionType="Float" x="335" y="25" width="175"
                height="20" isRemoveLineWhenBlank="true"
                backcolor="#99ccff"/>

                <dataSourceExpression>
                new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
                ($F{subReportBeanList})
                </dataSourceExpression>
                <subreportExpression class="java.lang.String">
                   <![CDATA[$P{SUBREPORT_DIR} + "subReport.jasper"]]>
                </subreportExpression>
   </subreport>

Тот же код работает в более старой версии с небольшим изменением.

<parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/>
    <subreport>
       <reportElement  positionType="Float" x="1" y="2" width="532" height="15" isRemoveLineWhenBlank="true" backcolor="#99CCFF"/>
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
                ($F{subReportBeanList})]]></dataSourceExpression>
                    <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{subreportParameter}]]></subreportExpression>
                </subreport>
...