簡體   English   中英

從Java代碼獲取“沒有為'plsql'語言注冊工廠查詢執行程序”異常

[英]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中進行驗證:

  • 菜單工具->選項->查詢執行器
  • 特別:
    • 語言= plsql,
    • 工廠類= com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory
    • 字段提供者類= com.jaspersoft.ireport.designer.data.fieldsproviders.SQLFieldsProvider

做同樣在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM