Мы используем 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 и не понял. не нашел ничего связанного с саксонским. Работает ли jasper только с процессором xalan xslt? Если нет, то как его изменить?