2011-10-15 31 views
7

JasperFillManager lancia un'eccezione di puntatore nullo quando passo la connessione sql nel suo parametro, ma funziona correttamente quando passo JRResultSetDatasource.Perché ottengo java.lang.NullPointerException su java.lang.Class.isAssignableFrom (metodo nativo) quando si chiama JasperFillManager?

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) 

quando si passa la connessione in fillReport fornisce un'eccezione.

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

Sto anche utilizzando un sottoreport, ecco perché non sto utilizzando JRResultSetDatasource e utilizzo della connessione. Sono solo bloccato in questa nota che quando passo JRResultSetDatasource funziona bene e quando passo anche oggetto di connessione in un parametro HasMap dà lo stesso errore di cui sopra.

+1

hai salvato la mia giornata! –

risposta

8

Ho appena riparato questo due minuti fa aggiornare il mio file jar iReport l'ultima versione

4

tuo Jasper-designer e vaso nel progetto dovrebbe essere la stessa versione.

1

Non c'è alcun problema da sostituire dal vecchio .jar al nuovo .jar. Se hai un'opzione. Supponiamo che sia necessario mantenere il vecchio barattolo ma dovrebbe funzionare significa. Si prega di usare questo.

Il seguente codice funziona nella versione superiore [Es: 4.1.1] non nella versione precedente [Es: 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> 

Lo stesso codice funziona nella versione precedente con modifica di bit.

<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> 
Problemi correlati