Olá pessoal.
Estou desenvolvendo um relatório que possui um subrelatório.
No ireport eu adicionei um elemento “subreport tool"
Na aba Subreport coloquei ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource(”/report/data/file/boleto")
e na aba Subreport (Other) adicionei a expressão “boleto_report.jasper”.
Bem até ai tudo bem no iReport ele funciona perfeitamente, mas quando fui integrar com o meu sistema ele não consegue achar o subrelatório e exibe este erro.
net.sf.jasperreports.engine.JRException: Could not load object from location : boleto_report.jasper
Bem o parametro $P{REPORT_DATA_SOURCE} já é default do ireport, não fui eu que criei. Eu pensei em pasar ele por parametro pela aplicação mas não sei como.
Alguém sabe o que estou fazendo de errado ou o que estou esquecendo de fazer?
Segue meu código.
public File gerarRelatorio(String pathContext, String pathDestination,
String imageParam, String report) {
ByteArrayInputStream bais = new ByteArrayInputStream(XML.getBytes());
JRExporter exporter = null;
try {
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("dataatual", new Date());
map.put("imagem", imageParam);
JRXmlDataSource jrxmlds = null;
if (report.equals("boleto")) {
jrxmlds = new JRXmlDataSource(bais, CAMINHO_XPATH_BOLETO);
} else {
jrxmlds = new JRXmlDataSource(bais, CAMINHO_XPATH_NF);
}
JasperPrint print = JasperFillManager.fillReport(pathContext, map,
jrxmlds);
exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
pathDestination);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.exportReport();
File file = new File(pathDestination);
return file;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}