【发布时间】:2021-05-03 19:45:08
【问题描述】:
我正在尝试一个简单的示例,从 JasperSoft Studio 中创建的 .jasper 报告生成 PDF。
我创建了一个空报告,完全没有(测试 - teste_vazio.jasper/teste_vazio.jrxml)。 我通过 Jasper Studio 本身生成了 .jasper 文件。 我创建了一个 Java 项目。我添加了以下库:
- com.lowagie.text-2.1.7.jar
- commons-beanutils-1.9.4.jar
- commons-collections4-4.4.jar
- commons-digester-2.1.jar
- commons-logging-1.2.jar
- itext-2.1.7.jar
- jasperreports-6.12.1.jar
- jasperreports-annotation-processors-6.16.0.jar
- jasperreports-custom-visualization-6.16.0.jar
- jasperreports-fonts-6.12.1.jar
- jasperreports-functions-6.16.0.jar
- jasperreports-javaflow-6.16.0.jar
- jasperreports-metadata-6.16.0.jar
- joda-time-2.10.10-no-tzdb.jar
- joda-time-2.10.10.jar
我开发了以下代码:
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();
}
}
.jrxml的代码是:
<?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>
运行项目时出现以下错误:
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)
我认为 Jasper Studio 生成的文件存在一些不兼容问题。 有没有人经历过这种情况?
【问题讨论】:
-
您是否尝试使用 Java 代码编译 jrxml?有用吗?
标签: jasper-reports