2011-11-17 48 views
2

我試圖通過傳遞整數參數來使用Struts2來運行jasper。但我得到一個錯誤的jasperreports in struts2

cannot assign instance of net.sf.jasperreports.engine.base.JRBaseTextField to field 
net.sf.jasperreports.engine.base.JRBaseParagraph.paragraphContainer of type 
net.sf.jasperreports.engine.JRParagraphContainer in instance of 
net.sf.jasperreports.engine.base.JRBaseParagraph 

我用我

parameterMap.put(parametername, param); 
connection = dbc.getConnection(); 
JasperPrint jasperPrint = JasperFillManager.fillReport("jasper.jasper", parameterMap, connection); 
JasperExportManager.exportReportToPdfFile(jasperPrint,"jasper.pdf"); 

請任何一個可以幫助我解決這個問題

+0

你有沒有檢查你的模板的iReport的幫助(通過預覽功能)? –

+0

是的,我已經檢查並能夠產生正確的預覽 – minisha

回答

2

這是衆所周知的問題,你可以see的代碼。

可能您正在使用commons-digester 2.1。您應該使用1.7版本的commons-digester庫。

更新:

我的工作示例(獨立Maven的Java應用程序):

public static void testReport() { 
    Connection connection = null; 
    try { 
     Class.forName("org.hsqldb.jdbcDriver"); 


     String url = "jdbc:hsqldb:file:d:\\path_to_db\db_file_name"; 
     connection = DriverManager.getConnection(url, "sa", ""); 

     String reportSource = "d:\\path_to_jrxml\\simple.jrxml"; 
     Map<String, Object> params = new HashMap<String, Object>(); 
     JasperReport jasperReport = JasperCompileManager.compileReport(reportSource); 
     JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection); 

     JasperExportManager.exportReportToPdfFile(jasperPrint, "d:\\output_path\\out.pdf"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println(e.getMessage()); 
    } finally { 
     try { 
      if (connection != null) { 
       connection.close(); 
      } 
     } catch (SQLException ex) { 
      System.out.println(ex.getMessage()); 
     } 
    } 
} 

從pom.xml中的片段:

<dependencies> 
    <dependency> 
     <groupId>net.sf.jasperreports</groupId> 
     <artifactId>jasperreports</artifactId> 
     <version>4.1.2</version> 
     <exclusions> 
      <exclusion> 
       <groupId>tomcat</groupId> 
       <artifactId>jasper-compiler-jdt</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>groovy</groupId> 
     <artifactId>groovy-all-1.0-jsr</artifactId> 
     <version>05</version> 
     <scope>runtime</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>xerces</groupId> 
       <artifactId>xercesImpl</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>2.2.4</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

你可以嘗試建立你的報告與我的樣本應用程序。
我認爲你的問題與classpath相關。

+0

我一直在使用commons-digester 1.7 jar。但我得到同樣的錯誤。 – minisha

+0

任何人都可以幫助我使用Java應用程序將jasper報告導出爲PDF – minisha

+0

您可以在類路徑中發佈所有庫嗎? –