2013-11-27 39 views
0

打電話報告我使用JasperReports的4.7.1插件的NetBeans 7.2產生從MySQL數據庫報告 而我從IDE運行該應用程序是沒有問題的發現接受這個警告:JasperReports的:從罐子

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). 
log4j:WARN Please initialize the log4j system properly. 

但報告生成並正確查看。

的問題是當我清理和構建應用程序,然後從罐中響起這文件不生成報表並沒有給我只是沒有看到報告任何異常和其他每一件事情是正常的嗎?

這是我用在查看報告JasperViewer功能:

public void printInvoice(int invid) throws IOException { 
    try { 
     String sql = "SELECT\n" + 
       "  ordersdetails.`ITEMNAME` AS ordersdetails_ITEMNAME,\n" + 
       "  ordersdetails.`AMOUNT` AS ordersdetails_AMOUNT,\n" + 
       "  ordersdetails.`PRICE` AS ordersdetails_PRICE,\n" + 
       "  invoices.`INVOICEID` AS invoices_INVOICEID,\n" + 
       "  invoices.`CUSTOMER` AS invoices_CUSTOMER,\n" + 
       "  invoices.`THEDATE` AS invoices_THEDATE,\n" + 
       "  invoices.`COST` AS invoices_COST\n" + 
       "FROM\n" + 
       "  `invoices` invoices RIGHT OUTER JOIN `ordersdetails` ordersdetails ON invoices.`INVOICEID` = ordersdetails.`INVOICE` where invoices.invoiceid=" + invid; 

     InputStream in = this.getClass().getResourceAsStream("/reports/invoice.jrxml"); 

     JasperDesign jd = JRXmlLoader.load(in); 

     JRDesignQuery q = new JRDesignQuery(); 
     q.setText(sql); 
     jd.setQuery(q); 

     JasperReport jasp_rep = JasperCompileManager.compileReport(jd); 

     JasperPrint jasp_print = JasperFillManager.fillReport(jasp_rep, null, mc.getConnection()); 
     JasperViewer.viewReport(jasp_print, false); 
    } catch (JRException e) { 
     JOptionPane.showMessageDialog(null, e.getMessage()); 
     System.out.println(e); 
    } 
} 
+0

你應該遵循這個問題:http://stackoverflow.com/questions/8943661/please-initialize-the-log4j-system-properly-warning –

+0

警告不是問題問題是從這個方法到結束JRXmlLoader使用已編譯的jar – user3043180

+0

當.load()沒有什麼工作是,該警告僅僅是警告...但在生產,這意味着,沒有什麼實際被記錄下來。所以這就是爲什麼你不會有任何錯誤的好理由。 –

回答

0

Propably加載從錯誤的位置報告,嘗試相對路徑:

InputStream in = this.getClass().getResourceAsStream("reports/invoice.jrxml"); 

這意味着有報表文件夾中的invoice.jrxml和該文件夾與調用getResourceAsStream的類(this.getClass())處於同一級別。

Additionaly你可以在你的程序的開始繞過警告與

org.apache.log4j.BasicConfigurator.configure(); 

+0

我已經改變了路徑幾次,如果發現文件有消息對話框進行檢查,看,文件發現,說明只是這種方法JRXmlLoader.load(中)之前停止;當運行編譯的jar時,但是從ide運行時它正常工作 – user3043180

+0

嘗試捕獲所有異常並將異常消息打印到System.err。嘗試從命令行'java -jar myjar.jar'運行以查看是否有任何RuntimeException被拋出?用不同的類路徑運行fom NB項目。 – PeterMmm