как переключить отчеты яшмы с ксалана на саксон?

Мы используем 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? Если нет, то как его изменить?


person mykola    schedule 20.12.2012    source источник


Ответы (1)


Джаспер очень настраиваемый. Я считаю, что вы можете просто написать свою собственную XPathExecutionFactory и подключить ее к Jasper, используя соответствующие переменные среды. Лично я просто развернул бы xalan и saxon параллельно, если бы мне понадобился saxon для чего-то еще.

person Daniel    schedule 21.12.2012