2012-12-20 54 views
3

我們在我們的項目中使用jasperreports 4.1.1,它工作正常,但最近我們已決定切換到xslt 2.0,並且我做了第一件事 - 我將xalan(沒有xslt 2.0實現)更改爲撒克遜。但是,第一份報告我運行把我的NoClassDefFoundError:如何將Jasmine報告從xalan切換到撒克遜?

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 

我想,這家酒店的原因碧玉使用xalan,但我不明白我可以改變它:我看了包net.sf.jasperreports.engine.util.xml,我沒有發現任何與撒克遜有關的東西。 Jasper是否僅使用xalan xslt處理器?如果沒有,那麼如何改變它?

回答

1

賈斯珀是非常可配置的。我相信你可以簡單地編寫自己的XPathExecutionFactory並使用適當的環境變量將其插入到Jasper中。如果我需要撒克遜的東西,我個人會同時部署xalan和撒克遜。