当我在其参数中传递sql连接时,JasperFillManager抛出一个空指针异常,但是当我传递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参数中传递连接对象时,它会给出与上面相同的错误。
答案 0 :(得分:9)
我刚刚在两分钟前将我的iReport jar文件更新到最后一个版本
答案 1 :(得分:4)
您项目中的jasper-designer和jar应该是相同的版本。
答案 2 :(得分:2)
项目lib文件夹中的Jar文件应该与iReport的版本匹配 我有同样的问题,它已通过使用正确的jar文件解决。 你可以看看下面的链接: http://sourceforge.net/projects/jasperreports/files/jasperreports/
答案 3 :(得分:1)
从旧的.jar替换为新的.jar没有问题。如果你有一个选择。假设您需要维护旧罐子,但它应该起作用。请用这个。
以下代码适用于较高版本[Ex:4.1.1],而不适用于旧版本[Ex: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>