获得;没有为';plsql';“语言”;Java代码中的异常
我有一个简单的报告,显示数据库中的字段。我在Jasper中设置了一个数据适配器,并将查询放入其中。我可以从Jasper成功地预览报告,但是当涉及到Java时,它无法编译报告并显示以下异常 2014年6月18日下午3:17:49 org.apache.commons.digester.digester-endElement 严重:结束事件引发异常 原因:net.sf.jasperreports.engine.JRRuntimeException:没有为“plsql”语言注册查询执行器工厂 java.lang.reflect.InvocationTargetException 2014年6月18日下午3:17:49 me.jasper.print.statement打印生成器报告 严重:空 net.sf.jasperreports.engine.JRException:org.xml.sax.SAXParseException;行号:7;栏目号:16;第7行字符16处出错:没有为“plsql”语言注册查询执行器工厂 原因:org.xml.sax.saxpasseeption;行号:7;栏目号:16;第7行字符16处出错:没有为“plsql”语言注册查询执行器工厂 这是我的Jasper报表查询设置获得;没有为';plsql';“语言”;Java代码中的异常,java,plsql,jasper-reports,Java,Plsql,Jasper Reports,我有一个简单的报告,显示数据库中的字段。我在Jasper中设置了一个数据适配器,并将查询放入其中。我可以从Jasper成功地预览报告,但是当涉及到Java时,它无法编译报告并显示以下异常 2014年6月18日下午3:17:49 org.apache.commons.digester.digester-endElement 严重:结束事件引发异常 原因:net.sf.jasperreports.engine.JRRuntimeException:没有为“plsql”语言注册查询执行器工厂 java
<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);
JasperDesign-JasperDesign=jrxmloader.load(新文件(“/home/mint/JaspersoftWorkspace/MyReports/ar/plsql.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(jasperDesign);
JasperPrint print=JasperFillManager.fillReport(jasperReport,newhashmap());
JasperViewer=新JasperViewer(打印,假);
jasperViewer.setVisible(true);
您必须指定查询执行器工厂,因为默认情况下JasperReports库中不包括对plsql的支持。在iReport中(至少在旧版本中),我相信这是默认为您设置的。您可以通过以下方式在iReport GUI中进行验证:
- 菜单工具->选项->查询执行器
- 具体而言:
- 语言=plsql
- 工厂类=com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory
- 字段提供程序类=com.jaspersoft.ireport.designer.data.fieldsproviders.SQLFieldsProvider
QueryExecuterFactory
,而不是JRQueryExecuterFactory
。(如果这没有帮助,您应该指定您正在使用哪个版本的JasperReports。)您还需要确保JasperReports扩展库位于类路径中。您可以在iReports lib目录中找到该jar
外部资源:
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");