Julio Martins
Julio Martins

Reputation: 39

The compiled with help of JSS report does not work from Java code - ReportExpressionEvaluationData is raised

I am trying a simple example to generate a PDF from a .jasper report created in JasperSoft Studio.

I created an empty report, with absolutely nothing (to test - teste_vazio.jasper/ teste_vazio.jrxml). I generated the .jasper file through Jasper Studio itself. I created a Java project. I added the following libraries:

And I developed the following code:

public static void main(String[] args) {
        System.out.println("Teste");
        generateReport();
    }
    
    static void generateReport() {
        try(Connection conn = DriverManager.getConnection(URL,USER,PASS) ) {
            JasperPrint jasperPrint = JasperFillManager.fillReport(Main.class.getResourceAsStream("teste_vazio.jasper"), new HashMap<String,Object>(),conn);
            File file = new File("/Users/julio/Desktop/JasperLibs/relatorio.jrprint");
            
            if (!file.exists()) {
                file.createNewFile();
                JRSaver.saveObject(jasperPrint, file);
            } else {
                JRPdfExporter exporterPdf = new JRPdfExporter();
                ExporterInput input = new SimpleExporterInput(jasperPrint);
                exporterPdf.setExporterInput(input);
                exporterPdf.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("/Users/julio/Desktop/JasperLibs/relatorio.pdf")));
                exporterPdf.exportReport();
            }
        } catch (SQLException | JRException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

The code of .jrxml is:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.15.0.final using JasperReports Library version 6.15.0-dd49bfb94918336b8321d5507193f0169ead4e95  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="teste_vazio" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6cad13ce-e8d7-4cd7-a095-3a1ab64cfe80">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

When I run the project I get the following error:

Exception in thread "main" java.lang.ClassCastException: net.sf.jasperreports.compilers.ReportExpressionEvaluationData cannot be cast to [B
    at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:109)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:351)
    at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:382)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:487)
    at net.sf.jasperreports.engine.fill.BaseReportFiller.<init>(BaseReportFiller.java:168)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:273)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:79)
    at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:251)
    at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:272)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:103)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:530)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:491)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:929)
    at Main.generateReport(Main.java:46)
    at Main.main(Main.java:28)

I think there is some incompatibility in the file generated by Jasper Studio. Has anyone ever experienced this?

Upvotes: 0

Views: 1583

Answers (1)

Julio Martins
Julio Martins

Reputation: 39

As Alex K suggested, I compiled the report via Java and everything worked perfectly. Thanks a lot Alex!

Below is the code used to compile, in case anyone needs it!

InputStream jrxmlStream = Main.class.getResourceAsStream("Cherry.jrxml");
            JasperReport relatorioCompilado = JasperCompileManager.compileReport(jrxmlStream);
            
            JasperPrint jasperPrint = JasperFillManager.fillReport(relatorioCompilado, new HashMap<String,Object>(),conn);
            File file = new File("/Users/julio/Desktop/JasperLibs/relatorio.jrprint");

Upvotes: 0

Related Questions