Search code examples
javajasper-reports

JasperReports 6.3. Get 'Class com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory not found' error for plsql language used at queryString


Trying to upgrade reports from JasperReports 3.5.3 to 6.3.1.

The snippet from jrxml:

<queryString language = "plsql"> <![CDATA[{call RPT_OCP($P{CUR},$P{ORACLE_REF_CURSOR})}]]> </queryString>

While trying to compile the report, facing the following exception,

Caused by: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Class com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory not found.
     [java]     at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1255)
     [java]     at net.sf.jasperreports.engine.design.JRDesignDataset.setQuery(JRDesignDataset.java:695)
     [java]     at net.sf.jasperreports.engine.design.JasperDesign.setQuery(JasperDesign.java:881)
     [java]     ... 37 more

The JasperReports of 6.3.1 version does not have any jasperreport-extentions jar, what would be the work around for this?


Solution

  • You should check that the handler (Executer) for plsql language is defined at jasperreports.properties file.

    The right definition (for 6.x version) is:

    net.sf.jasperreports.query.executer.factory.plsql=net.sf.jasperreports.engine.query.PlSqlQueryExecuterFactory
    

    Maybe you have something different since the previous version of JasperReports engine.

    BTW, JasperReports 3.5.3 did not support this extenstion (plsql). I think that using com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory at your case was some kind of stub/fix.