Here is the code of how the report is being generated public void ReportGenerator() { // Get Database Connection DatabaseManager dm = new DatabaseManager(); //compile main report which has sub report using the JRXML JasperReport jasperReport = JasperCompileManager.compileReport( "C:\WORK\CODE\src\ReportTemplates\JasperReports\MainReport.jrxml"); //save report to .jasper JRSaver.saveObject(jasperReport, "C:\WORK\CODE\src\ReportTemplates\JasperReports\MainReport.jasper"); //compile sub reports - I am sharing just 2 sub reports - there are 10 sub reports in total JasperReport ALL_PHASES_MSG_STATUS_ARINC_TYPE_LS = JasperCompileManager.compileReport( "C:\WORK\CODE\src\ReportTemplates\JasperReports\ALL_PHASES_Sub_ReportLS.jrxml"); JasperReport ALL_PHASES_MSG_STATUS_ARINC_TYPE_XWB = JasperCompileManager.compileReport( "C:\WORK\CODE\src\ReportTemplates\JasperReports\ALL_Messages_Sub_Report.jrxml"); //saving sub report as .jasper JRSaver.saveObject(ALL_PHASES_MSG_STATUS_ARINC_TYPE_LS , "C:\WORK\CODE\src\ReportTemplates\JasperReports\ALL_PHASES_Sub_ReportLS.jasper"); JRSaver.saveObject(ALL_PHASES_MSG_STATUS_ARINC_TYPE_XWB , "C:\WORK\CODE\src\ReportTemplates\JasperReports\ALL_Messages_Sub_Report.jasper"); // Set Parameter object to pass to the main report Map<String, Object> parameters = new HashMap<>(); // Populate Parameters parameters.put("PARAM_UserID", 7163123); parameters.put("PARAM_HeaderTemplateType", "A_H1"); parameters.put("PARAM_FooterTemplateType", "A_F1"); parameters.put("PARAM_DisplayTemplateType", "MT"); parameters.put("PARAM_StartPageindex", 1); parameters.put("PARAM_LabelOfPagination", 12); parameters.put("PARAM_MATRIX_TEMPLATE", "A429"); parameters.put("PARAM_AL_ID", 7345356); // Load the compiled JasperReport template from above where it is saved ref line 10 from object jasperReport JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dm.getConnection()); // Export the report to PDF JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\Reports\Output\Create_Category_Report.pdf"); System.out.println("Report generated successfully."); }