在linux上找不到JasperReports子报表资源

时间:2014-04-29 14:30:14

标签: java jasper-reports subreport

我有一个java 7应用程序,需要从xml文件创建一个PDF。 使用iReport设计器我成功创建了报告。此报告包含嵌套 子报表。我有一个参数' SUBREPORT_DIR'在传递的masterreport中 到子报告。所有.jasper文件(主页和子报表)都包含在 项目资源位于' / jasper /' -directory。

在java中,我执行以下操作:

Map<String, Object> params = new HashMap<>();
params.put("SUBREPORT_DIR", "\\jasper\\" );
String sJasper = "/InvoiceMasterReport.jasper";
try (InputStream jasper = InvoiceTransformer.class.getResourceAsStream(sJasper)) {
     iReportTransformer irt = new iReportTransformer(file, pdfResult, jasper, params);
     irt.transformToPDF();
}

并在transformToPDF()方法中:

JRXmlDataSource jrSource = new JRXmlDataSource(noNS.toFile(), "/INVOICE");
JasperPrint jp = JasperFillManager.fillReport(_jasperStream, _params, jrSource);        
jrSource.close();               

JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, _pdfResult.toString());
exporter.setParameter(JRPdfExporterParameter.PDFA_CONFORMANCE, JRPdfExporterParameter.PDFA_CONFORMANCE_1A);

URL url = this.getClass().getResource("/jasper/sRGB_v4_ICC_preference.icc");        
String iccPath = Paths.get(url.toURI()).toAbsolutePath().toString();
exporter.setParameter(JRPdfExporterParameter.PDFA_ICC_PROFILE_PATH, iccPath);
exporter.exportReport();

现在出现问题:这一切都在Windows机器上进行开发,但是 当我在linux上部署时,我在exportReport() - 方法:

上收到一个JRException
Exception be.vanmarcke.edixml.CM8.TransformationException: net.sf.jasperreports.engine.JRException: Resource not found at : /jasper/SubReportHeader.jasper on /opt/EDIXML_docs/2014/April/29/16/invoices/T_1398780297363.xmlMessage: net.sf.jasperreports.engine.JRException: Resource not found at : /jasper/SubReportHeader.jasperStackTrace: 
be.vanmarcke.edixml.CM8.TransformationException: net.sf.jasperreports.engine.JRException: Resource not found at : /jasper/SubReportHeader.jasper 
at be.vanmarcke.edixml.CM8.InvoiceTransformer.XMLInvoiceToPDF_iReport(InvoiceTransformer.java:66)
at be.vanmarcke.edixml.invoices.InvoiceFileHandler.createPDF(InvoiceFileHandler.java:333)
at be.vanmarcke.edixml.invoices.InvoiceFileHandler.commitValidDocument(InvoiceFileHandler.java:358)
at be.vanmarcke.edixml.invoices.InvoiceFileHandler.commitDocument(InvoiceFileHandler.java:180)
at be.vanmarcke.edixml.general.AbstractFileHandler.handleParsedInputFiles(AbstractFileHandler.java:290)

...

我已经为SUBREPORT_DIR参数尝试了几个值,但没有一个值可行。 有没有人对此有任何建议或替代解决方案?

1 个答案:

答案 0 :(得分:0)

好吧,我已经修好了&#39;这不包括.jasper文件作为jar文件中的资源。 相反,我从外部文件夹加载文件。