注意:我尝试实现子报表,但出现错误。这是我用来编译子报表的代码:
JasperDesign sub = JRXmlLoader.load(this.getClass().getResourceAsStream("/SubReport.jrxml"));
JasperDesign main = JRXmlLoader.load(this.getClass().getResourceAsStream("/MainReport.jrxml"));
JasperReport mainReport = JasperCompileManager.compileReport(main);
Map<String,Object> parameter=new HashMap<>();
parameter.put("SubReport",sub);
JasperPrint jasperPrint = JasperFillManager.fillReport(mainReport, parameter, new JREmptyDataSource());
JasperViewer.viewReport(jasperPrint);
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Unknown subreport source class net.sf.jasperreports.engine.design.JasperDesign
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:359)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:382)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:307)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:456)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:354)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:290)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:152)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:892)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:668)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:984)