问题
似乎问题出在 XPath 引擎上。即解析 XML 文件以查找数据的库。
iReport Designer 使用Jaxen,JasperReport 使用Xalan。与 Jaxen 相比,Xalan 真的很慢(真的很慢)。
这就是为什么仅在从 Java 应用程序而不是从 iReports 填充报告时才会出现问题的原因。
解决方案
好吧,解决方案很简单,只需在您的 Java 应用程序中添加以下行以选择 Jaxen 库而不是默认的 Xalan 库(它已被弃用,但它可以工作):
JRProperties.setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
编辑:该行已被弃用,我找到了设置属性的正确方法:
DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
您还需要将 Jaxen .jar 添加到您的构建路径中。这是一个链接:https ://mvnrepository.com/artifact/jaxen/jaxen
使用 Xalan 填写报告需要 3-5 分钟,而现在使用 Jaxen 只需几秒钟即可完成。
答案在这里找到:http: //community.jaspersoft.com/questions/536842/jasperreports-too-slow
也在这里:http: //community.jaspersoft.com/wiki/xml-data-source-very-slow -解析