This still does not work in my case. I have my .jrxml/.jasper files in one directory. When I launch iReport by double clicking on the main report file, I can generate the report, with the subreports and the one sub-subreport. My Java Swing application is currently run from my Eclipse workspace project directory, so the workspace is the current directory for the JVM when my app is launched. I prompt the user for various options related to running the report, including using a JFileChooser to let the user select any JasperReport they want to run. I set up my Map object with the various parameters, and include a SUBREPORT_DIR key in the Map passed to JasperFillManager.fillReport(String {full path to main .jasper report file}, Map {myMap}, Connection {mySqlConnection}). The value for the SUBREPORT_DIR is the directory where the main report is located. If I remove the sub-subreport from the one subreport, everything is generated correctly, so it appears that the SUBREPORT_DIR value is being used to load the primary sub-reports. But, if my one subreport includes the sub-subreport, this SUBREPORT_DIR value is not being used or evaluated, as I get an exception stating that the sub-subreport file cannot be located, and the directory prefix for the sub-subreport is the value encoded within the subreport's .jrxml/.jasper file.