问题
看来问题出在XPath引擎上。即,解析XML文件以查找数据的库。
当iReport Designer使用 Jaxen时 ,JasperReport使用 Xalan
。与Jaxen相比,Xalan真的很慢(真的很慢)。
这就是为什么仅在从Java应用程序而不是从iReports填充报表时才会出现此问题的原因。
解决方案
好了,解决方案很简单, 只需在Java应用程序中添加以下行以选择Jaxen lib而不是默认的Xalan lib(已弃用,但可以使用):
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
-解析



