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

Java linux上找不到JasperReports子报表资源,java,jasper-reports,subreport,Java,Jasper Reports,Subreport,我有一个Java7应用程序,其中需要从xml文件创建PDF。 我使用iReport designer成功创建了报告。此报表包含嵌套的 子报告。我在主报告中有一个参数'SUBREPORT_DIR',该参数将被传递 到子报告。所有.jasper文件主报告和子报告都包含在 “/jasper/”目录中的项目资源 在java中,我执行以下操作: Map<String, Object> params = new HashMap<>(); params.put("SUBREPORT_D

我有一个Java7应用程序,其中需要从xml文件创建PDF。 我使用iReport designer成功创建了报告。此报表包含嵌套的 子报告。我在主报告中有一个参数'SUBREPORT_DIR',该参数将被传递 到子报告。所有.jasper文件主报告和子报告都包含在 “/jasper/”目录中的项目资源

在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();
}
现在来看问题:这一切都在Windows机器上的开发中起作用,但是 在linux上部署时,我在exportReport方法上收到一个JREException:

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 param尝试了几个值,但没有一个有效。
有人对此有什么建议或替代解决方案吗?

好吧,我通过在jar文件中不包含.jasper文件作为资源来“修复”这个问题。 相反,我从外部文件夹加载文件

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)