2011-10-15 25 views
7

JasperFillManager là ném một ngoại lệ con trỏ null khi tôi vượt qua kết nối sql trong tham số của nó nhưng nó chạy tốt khi tôi vượt qua JRResultSetDatasource.Tại sao tôi nhận được java.lang.NullPointerException tại java.lang.Class.isAssignableFrom (Phương thức Gốc) khi gọi 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) 

khi tôi chuyển kết nối trong fillReport nó có ngoại lệ.

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

Tôi cũng đang sử dụng một subreport vì vậy đó là lý do tại sao tôi không sử dụng JRResultSetDatasource và sử dụng kết nối. Tôi chỉ bị mắc kẹt vào lưu ý này rằng khi tôi vượt qua JRResultSetDatasource nó hoạt động tốt và khi tôi cũng vượt qua đối tượng kết nối trong một tham số HasMap nó cho cùng một lỗi như trên.

+1

bạn đã lưu ngày của mình! –

Trả lời

8

Tôi chỉ cố định này hai phút trước cập nhật file jar iReport của tôi lên phiên bản mới nhất

4

bạn jasper-nhà thiết kế và jar trong dự án của bạn nên có cùng một phiên bản.

1

Không có vấn đề gì để thay thế từ .jar cũ sang mới .jar. Nếu bạn có một tùy chọn. Giả sử bạn cần phải duy trì cái lọ cũ nhưng nó phải hoạt động. Hãy sử dụng cái này.

Mã sau hoạt động ở phiên bản cao hơn [Ví dụ: 4.1.1] không có trong phiên bản cũ hơn [Ví dụ: 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> 

Cùng một mã hoạt động trong phiên bản cũ hơn với chút sửa đổi.

<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> 
Các vấn đề liên quan