[英]Getting “No query executer factory registered for the 'plsql' language” Exception from Java code
我有一個簡單的報告,顯示數據庫中的字段。 我已經在Jasper中設置了數據適配器並將查詢放入。 我可以從Jasper成功預覽報告,但是當涉及到Java時,它無法編譯報告並顯示以下異常
2014年6月18日,下午3:17:49 org.apache.commons.digester.Digester endElement SEVERE:結束事件引發異常
引起原因:net.sf.jasperreports.engine.JRRuntimeException:沒有為'plsql'語言注冊的查詢執行程序工廠。
java.lang.reflect.InvocationTargetException 2014年6月18日,下午3:17:49 me.jasper.print.StatementPrint generateReport嚴重:null
net.sf.jasperreports.engine.JRException:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:16; 第7行的錯誤char 16:沒有為“ plsql”語言注冊任何查詢執行程序工廠。
由以下原因引起:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:16; 第7行的錯誤char 16:沒有為“ plsql”語言注冊任何查詢執行程序工廠。
這是我的Jasper報告查詢設置
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="testDataAdapter"/>
<queryString language="plsql">
<![CDATA[CALL getStatementDetails(250001 , "2012-01-01" , "2015-01-01" , 0 , 0)]]>
</queryString>
這是我的Java代碼
JasperDesign jasperDesign = JRXmlLoader.load(new File("/home/mint/JaspersoftWorkspace/MyReports/ar/plsql.jrxml"));
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint print = JasperFillManager.fillReport(jasperReport, new HashMap<>());
JasperViewer jasperViewer = new JasperViewer(print, false);
jasperViewer.setVisible(true);
您必須指定查詢執行器工廠,因為JasperReports庫默認不包括對plsql的支持。 在iReport中(至少在較早的版本中),我認為默認情況下已為您設置了此設置。 您可以通過以下方式在iReport GUI中進行驗證:
做同樣在Java中,必須這樣做 :
jasperReport.setProperty( "net.sf.jasperreports.query.executer.factory.plsql"
,"com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory");
//Maybe this too, but not positive
JRProperties.setProperty( JRQueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX+"plsql"
,"com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory");
請注意,類名稱在最新版本中已更改。 所以,與其JRQueryExecuterFactory
,您可能需要使用QueryExecuterFactory
。 (如果這樣做沒有幫助,則應指定所使用的JasperReports版本。)您還需要確保JasperReports擴展庫在類路徑中。 您可以在iReports lib目錄中找到該jar。
外部資源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.