У меня возникла проблема при попытке загрузить .jasper subReport , который находится внутри файла .war.
Идея состоит в том, чтобы загрузить подотчет, который находится внутри папки "parte1".
В документации сказано, что вы не можете передать относительный путь для загрузки файла подотчета ...
Вы не можете использовать относительный путь для поиска файла подотчета; то есть, если у вас есть отчет в c: \ myreport \ main_report.jasper, вы не можете ссылаться на подотчет, используя выражение вроде .. \ mysubreports \ mysubreport.jasper.
Это связано с тем, что JasperReports не сохраняет в памяти исходное местоположение файла Jasper, с которым он работает. Это имеет смысл, учитывая, что объект Jasper не обязательно загружается из физического файла.
Итак, я пытаюсь передать полный путь к файлу .jasper.
1.- Я получаю контекст, используя @Autowired, а затем завершаю путь в виде строки ...
parameters.put("SUBREPORT_DIR", contextPath + "WEB-INF" + File.separator + "report" + File.separator + "parte1" + File.separator);
2.- Передайте путь к jasperReport в качестве параметра
printFileName = JasperFillManager.fillReportToFile(getPath(sourceFileName), parameters, new JRBeanCollectionDataSource(lstDataSource));
3.- укажите путь для загрузки файла subReport
<subreport>
<reportElement x="50" y="50" width="200" height="200" uuid="ced7076b-b6ba-4973-8e4c-cd289bd77c4e"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{motivoReclamo})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "ClsMotivoReclamoReportBean.jasper"]]></subreportExpression>
</subreport>
но при попытке его запустить. Отображается это сообщение об ошибке ...
2019-01-15 05:29:19 [http-nio-8081-exec-2] ОШИБКА xxx.xxx.xx.report.PDFGenerator - net.sf.jasperreports.engine.JRException: ресурс не найден по адресу: C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps \ xxxxxxxxx \ WEB-INF \ report \ parte1 \ ClsMotivoReclamoReportBean.jasper.
Заранее спасибо.
UPDATE
Я использую Spring Boot и создаю .war-файл
Я использую этот плагин maven для компиляции отчетов и генерации файла .jasper.
https://github.com/alexnederlof/Jasper-report-maven-plugin
Затем я использую этот плагин maven, чтобы скопировать некоторые изображения, необходимые в отчете ...
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/generated-sources/report</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/jasperfiles</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.jrxml</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
А потом я использую этот плагин maven для копирования файлов яшмы в .war
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/generated-sources/report</directory>
<targetPath>WEB-INF/classes/report</targetPath>
</resource>
</webResources>
</configuration>
</plugin>