Reputation: 39
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
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