2014-10-06 13 views
-1

嗨朋友正試圖通過散列表傳遞給碧玉報告的幾個參數,我得到的文件沒有發現異常,但我的文件被放置在netbeans項目文件夾下,下面是我的java代碼賈斯珀報告文件沒有找到異常需要幫助請

try{ HashMap hmp = new HashMap(); 
     hmp.put("mytin", m_t_n); 
     hmp.put("cname", c_n_m); 
     hmp.put("invno", c_in); 
     hmp.put("ctin", c_t); 
     hmp.put("date", c_d); 
     hmp.put("time", c_m); 
     hmp.put("gtot", gt); 
     hmp.put("dis", dcn); 
     hmp.put("adj", amtn); 
     hmp.put("fin", fn_am); 

     JasperReport jrpt = null; 
     String srcd="report1.jrxml"; 
     JasperPrint jp; 
     //jrpt = JasperCompileManager.compileReport(getClass().getResource(srcd)); 
jrpt = (JasperReport)JRLoader.loadObject(new File(srcd)); 
     jp=JasperFillManager.fillReport(jrpt,hmp, DriverManager.getConnection("jdbc:mysql://localhost:3306/billing", "root", "")); 
      JasperViewer jv = new JasperViewer(jp,false); 
      jv.setFitWidthZoomRatio(); 
      jv.setVisible(true); 
} 
catch(Exception er){ 
} 

我得到的錯誤是

run: 
    java.io.FileNotFoundException: report1.jrxml 
    net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: report1.jrxml 

好心幫我提前解決此錯誤感謝

+0

存儲文件的位置(與源文件的關係)?需要編譯'jrxml'才能填充 – MadProgrammer 2014-10-06 05:33:21

+0

yeas jrxml存儲在netbeans項目文件夾中 – 2014-10-06 06:12:34

+0

項目文件夾中的哪個位置?在src'文件夾中?在什麼目錄結構中? – MadProgrammer 2014-10-06 07:28:10

回答

0

試試這個代碼 -

try { 
      String reportSource = "resources/report1.jrxml"; 
      Map<String, Object> params = new HashMap<String, Object>(); 
      JasperReport jasperReport = JasperCompileManager.compileReport(reportSource); 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource()); 
      JasperViewer.viewReport(jasperPrint, false); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
+0

資源應該是我的文件夾名稱在哪裏存儲jrxmll文件我的權利 – 2014-10-06 05:31:30

+0

是的..在你的情況下,它可以只是'String reportSource =「report1.jrxml」 ;' – 2014-10-06 05:33:19

+0

在我的情況確定我有我的項目中包含的同一文件夾中的jrxml文件,所以我認爲不需要指定我的文件夾名稱,而是我可以簡單地給出直接文件名是好的 – 2014-10-06 05:37:51

1

讓我們假設你的類文件,並report1.jrxml都存儲在您的項目在同一封裝內...

src/some/package/name/Report.java 
src/some/package/name/report1.jrxml 

然後,你應該能夠使用getClass().getResource("report1.jrxml")獲得URL參考資源

如果確實有效,那麼你需要嘗試類似getClass().getResource("/some/package/name/report1.jrxml")。如果失敗了,那麼文件有問題。要麼,你認爲這是不是也被損壞以某種方式...

一個jrxml文件是JasperReports的使用只是一個XML文件,它需要先編譯才能使用它...

try{ 
    HashMap hmp = new HashMap(); 
    hmp.put("mytin", m_t_n); 
    hmp.put("cname", c_n_m); 
    hmp.put("invno", c_in); 
    hmp.put("ctin", c_t); 
    hmp.put("date", c_d); 
    hmp.put("time", c_m); 
    hmp.put("gtot", gt); 
    hmp.put("dis", dcn); 
    hmp.put("adj", amtn); 
    hmp.put("fin", fn_am); 

    JasperReport jrpt = null; 
    String srcd="report1.jrxml"; 
    JasperPrint jp; 
    jrpt = JasperCompileManager.compileReport(getClass().getResource(srcd)); 
    //jrpt = (JasperReport)JRLoader.loadObject(new File(srcd)); 
    jp=JasperFillManager.fillReport(jrpt,hmp, DriverManager.getConnection("jdbc:mysql://localhost:3306/billing", "root", "")); 
    JasperViewer jv = new JasperViewer(jp,false); 
    jv.setFitWidthZoomRatio(); 
    jv.setVisible(true); 
} catch(Exception er){ 
    er.printStackTrace(); 
}