【发布时间】:2013-12-13 14:47:54
【问题描述】:
我正在为 NetBeans 7.2 使用 JasperReports 4.7.1 插件 从 mysql 数据库生成报告 当我从 ide 运行应用程序时,没有发现问题,请接受此警告:
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
log4j:WARN Please initialize the log4j system properly.
但报告生成并正确查看。
问题是,当我清理并构建应用程序然后从 jar 文件中运行它时,报告没有生成并且没有给我任何异常,只是没有查看报告,其他一切都正常吗?
这是我在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);
}
}
【问题讨论】:
-
你应该关注这个问题:stackoverflow.com/questions/8943661/…
-
警告不是问题问题是从这个方法到结束 JRXmlLoader.load() 使用编译后的jar时没有任何工作
-
是的,警告只是警告......但在生产中,这意味着实际上没有记录任何内容。所以这是您没有收到任何错误的一个很好的理由。
-
你能不能告诉我把这条线 log4j.rootLogger=DebugAppender 放在你给我指出的问题中
标签: java jasper-reports