Java 在apache服务器上部署war文件时Jasper报告不工作

Java 在apache服务器上部署war文件时Jasper报告不工作,java,apache,jsp,jasper-reports,Java,Apache,Jsp,Jasper Reports,我已经创建了jasper report,它在netbean上运行得非常好,但当我构建war文件并将其部署到apache服务器上时,它就不起作用了 我花了一整天的时间努力解决这个问题,但没有找到任何解决办法。请帮我解决这个问题 这是我的代码 String loc = "C:\\Program Files\\report\\ public void CustBillPrint(String BillNo) { String path = loc + "customer-bill-1.

我已经创建了jasper report,它在netbean上运行得非常好,但当我构建war文件并将其部署到apache服务器上时,它就不起作用了

我花了一整天的时间努力解决这个问题,但没有找到任何解决办法。请帮我解决这个问题

这是我的代码

String loc = "C:\\Program Files\\report\\
public void CustBillPrint(String BillNo) {
        String path = loc + "customer-bill-1.jasper";
        Map param = new HashMap();
        param.put("billno", BillNo);
        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(path, param, con);
            JasperViewer.viewReport(jasperPrint, false);

        } catch (JRException e) {
            System.out.println(e);
        }
    }
我已经尝试了以下多种方法:

InputStream path = this.getClass().getResourceAsStream("report/farmpati-1.jasper");

InputStream path = new FileInputStream(new File("web/report/farmpati-1.jasper"));

InputStream path = new FileInputStream(new File("").getAbsolutePath() + "/reports/logReport.jrxml");

String path = System.getProperty("user.dir") + "\\report\\";

String path = new File(".").getCanonicalPath() + "/web/report/";

所有这些替代方法都可以在NetBan中使用,但在部署为war时不能在apache上使用

使用
ServletContext
getResourceAsStream()
方法在任何web应用程序中读取jar文件中的资源

ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/farmpati-1.jasper");

请仔细查看

我在community.jaspersoft.com上找到了一个可能的答案:

“在有效的报告中,子报告不仅仅存在于 存储库作为其自己的报告,与主报告处于同一级别。 资源“文件夹”中也有该子报表的副本 主要报告。”


该主题包含多个解决方案,其中一个是Stackoverflow上的已解决主题: (警告:这是一篇很长但很详细的文章)

请在您的答案中阅读一篇文章,您只有链接,这还不足以成为一个好的答案。写下关于您找到的解决方案的更多信息和/或在答案中引用来源。