繁体   English   中英

如何将jasper报告从xalan切换到saxon?

[英]how to switch jasper reports from xalan to saxon?

我们在项目中使用jasperreports 4.1.1并且它工作正常但最近我们决定切换到xslt 2.0并且我做的第一件事 - 我将xalan(没有xslt 2.0实现)更改为saxon。 但是我跑的第一份报告把我扔给了NoClassDefFoundError:

java.lang.NoClassDefFoundError: org/apache/xpath/CachedXPathAPI
    at net.sf.jasperreports.engine.util.xml.XalanXPathExecuter.<init>(XalanXPathExecuter.java:45)
    at net.sf.jasperreports.engine.util.xml.XalanXPathExecuterFactory.getXPathExecuter(XalanXPathExecuterFactory.java:39)
    at net.sf.jasperreports.engine.util.xml.JRXPathExecuterUtils.getXPathExecuter(JRXPathExecuterUtils.java:85)
    at net.sf.jasperreports.engine.data.JRXmlDataSource.<init>(JRXmlDataSource.java:172)
    at net.sf.jasperreports.engine.query.JRXPathQueryExecuter.createDatasource(JRXPathQueryExecuter.java:91)

我们没有任何明确的绑定到xalan,但jaspereports有这个属性:

# Apache Xalan XPath executers are used by default
net.sf.jasperreports.xpath.executer.factory=net.sf.jasperreports.engine.util.xml.XalanXPathExecuterFactory

我想这个属性导致jasper使用xalan但我不明白我可以改变它:我看了包net.sf.jasperreports.engine.util.xml ,我没有找到任何与saxon相关的东西。 jasper只与xalan xslt处理器一起使用吗? 如果不是那么如何改变呢?

Jasper非常易于配置。 我相信您可以编写自己的XPathExecutionFactory并使用适当的环境变量将其插入Jasper。 如果我需要saxon用于别的东西,我个人只会并行部署xalan和saxon。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM