Hi, I have a Report Book created with JasperSoft Studio v7. When importing this report into the latest Docker version of ReportServer, I get the exception:-
Could not execute report: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 235; cvc-complex-type.3.2.2: Attribute ‘sectionType’ is not allowed to appear in element ‘jasperReport’.
Is there something I need to update on the ReportServer image?
As an update to this, I have found a previous post indicating that Jasper Library v7 is not compatible, so have saved the document using v6.20.6 JRXML version. When saved using this version, if I try to open the ReportBook, I still get an exception:-
error":“JRValidationException: Report design not valid : \n\t 1. Band reports cannot contain parts\n\t 2. Band reports cannot contain parts\n\t 3. Band reports cannot contain parts”,“report_id”:6656,“report_name”:“TicketBook”,“base_report_id”:6656,“base_report_name”:“TicketBook”,“executing_user_id”:6,“report_output_format”:“PDF”,“report_key”:"7d52cece8ddd282901895e8f8270cf754017f93f
I have just uploaded one of the sub-reports as a standalone report, and it does excute without exception, but produces a blank page?
Since posting this query, I have actually rebuit the report book using Jasper Reports Studio 6.21.5. The individual reports now run correctly in ReportServer, but I still can’t get the Report Book to operate. Are Jasper sub-reports supported by ReportServer?
The ReportServer version details are as follows:-
RS5.0.0-6114 (2025-06-18-09-20-45)
424bb97f-5442-49b3-8f84-9227a65a8c15
2026 March 20
Enterprise Edition (Evaluation)
It is installed from the standalone docker image.
Here is the full error:-
Error: An error occurred during report execution.
The report could not be executed: IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/181b0004-6f27-46dc-9ea4-dd4a2c3213fa/wave found.
To get help please contact an administrator.
Details
Report could not be executed. {“error”:“IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/181b0004-6f27-46dc-9ea4-dd4a2c3213fa/wave found.”,“report_id”:6656,“report_name”:“TicketBook”,“base_report_id”:6656,“base_report_name”:“TicketBook”,“executing_user_id”:6,“report_output_format”:“PDF”,“report_key”:“fb7a46a82027fc37a6568f66a2e725c9c9990fe3”} net.datenwerke.rs.core.service.reportmanager.exceptions.ReportExecutorException: The report could not be executed: IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/181b0004-6f27-46dc-9ea4-dd4a2c3213fa/wave found. at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:281) at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:161) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.executeReport(ReportExportServlet.java:577) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doExportReport(ReportExportServlet.java:449) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReport(ReportExportServlet.java:370) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportViaSession(ReportExportServlet.java:361) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doGet(ReportExportServlet.java:162) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.GUICE$TRAMPOLINE() at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74) at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:64) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75) at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75) at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.doGet() at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.GUICE$TRAMPOLINE() at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74) at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75) at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.service() at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/181b0004-6f27-46dc-9ea4-dd4a2c3213fa/wave found. at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine$1$1.openConnection(JasperReportEngine.java:222) at java.base/java.net.URL.openConnection(Unknown Source) at java.base/java.net.URL.openStream(Unknown Source) at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:286) at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:134) at net.sf.jasperreports.repo.InputStreamPersistenceService.load(InputStreamPersistenceService.java:51) at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:196) at net.sf.jasperreports.repo.RepositoryUtil.findInputStream(RepositoryUtil.java:195) at net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(RepositoryUtil.java:211) at net.sf.jasperreports.renderers.util.RendererUtil.getNonLazyRenderable(RendererUtil.java:179) at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:522) at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:450) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:548) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:335) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:160) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:631) at net.sf.jasperreports.parts.subreport.SubreportFillPart.fill(SubreportFillPart.java:204) at net.sf.jasperreports.engine.part.FillPart.fill(FillPart.java:100) at net.sf.jasperreports.engine.fill.PartReportFiller.fillPart(PartReportFiller.java:417) at net.sf.jasperreports.engine.fill.PartReportFiller.fillParts(PartReportFiller.java:402) at net.sf.jasperreports.engine.fill.PartReportFiller.fillFirstGroupHeaders(PartReportFiller.java:361) at net.sf.jasperreports.engine.fill.PartReportFiller.fillReport(PartReportFiller.java:289) at net.sf.jasperreports.engine.fill.PartReportFiller.fill(PartReportFiller.java:225) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:416) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:120) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:103) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:530) at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine.executeReport(JasperReportEngine.java:304) at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine.doExecute(JasperReportEngine.java:108) at net.datenwerke.rs.core.service.reportmanager.engine.ReportEngine.execute(ReportEngine.java:154) at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:246) … 50 more
Following that guide I still receive the following exception:-
00:50:58.898 WARN n.d.r.c.s.r.ReportExportServlet$$EnhancerByGuice$$2004603646 - The report could not be executed: IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/13a5d27b-d09f-4151-8e1e-87021ffcde2f/wave found., details: Report could not be executed. {“error”:“IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/13a5d27b-d09f-4151-8e1e-87021ffcde2f/wave found.”,“report_id”:31066,“report_name”:“Wave_Book”,“base_report_id”:31066,“base_report_name”:“Wave_Book”,“executing_user_id”:6,“report_output_format”:“PDF”,“report_key”:“2526fd47057d43d231588ab035c0422950ec2f9a”}
net.datenwerke.rs.core.service.reportmanager.exceptions.ReportExecutorException: The report could not be executed: IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/13a5d27b-d09f-4151-8e1e-87021ffcde2f/wave found.
at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:281)
at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:161)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.executeReport(ReportExportServlet.java:577)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doExportReport(ReportExportServlet.java:449)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReport(ReportExportServlet.java:370)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportViaSession(ReportExportServlet.java:361)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doGet(ReportExportServlet.java:162)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.GUICE$TRAMPOLINE()
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:64)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.doGet()
at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.GUICE$TRAMPOLINE()
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$2004603646.service()
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: No subreport of name rsfsx://jaspersubreport/13a5d27b-d09f-4151-8e1e-87021ffcde2f/wave found.
at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine$1$1.openConnection(JasperReportEngine.java:222)
at java.base/java.net.URL.openConnection(Unknown Source)
at java.base/java.net.URL.openStream(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:286)
at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:134)
at net.sf.jasperreports.repo.InputStreamPersistenceService.load(InputStreamPersistenceService.java:51)
at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:196)
at net.sf.jasperreports.repo.RepositoryUtil.findInputStream(RepositoryUtil.java:195)
at net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(RepositoryUtil.java:211)
at net.sf.jasperreports.renderers.util.RendererUtil.getNonLazyRenderable(RendererUtil.java:179)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:522)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:450)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:548)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:335)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:160)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:631)
at net.sf.jasperreports.parts.subreport.SubreportFillPart.fill(SubreportFillPart.java:204)
at net.sf.jasperreports.engine.part.FillPart.fill(FillPart.java:100)
at net.sf.jasperreports.engine.fill.PartReportFiller.fillPart(PartReportFiller.java:417)
at net.sf.jasperreports.engine.fill.PartReportFiller.fillParts(PartReportFiller.java:402)
at net.sf.jasperreports.engine.fill.PartReportFiller.fillFirstGroupHeaders(PartReportFiller.java:361)
at net.sf.jasperreports.engine.fill.PartReportFiller.fillReport(PartReportFiller.java:289)
at net.sf.jasperreports.engine.fill.PartReportFiller.fill(PartReportFiller.java:225)
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:416)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:120)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:103)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:530)
at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine.executeReport(JasperReportEngine.java:304)
at net.datenwerke.rs.base.service.reportengines.jasper.JasperReportEngine.doExecute(JasperReportEngine.java:108)
at net.datenwerke.rs.core.service.reportmanager.engine.ReportEngine.execute(ReportEngine.java:154)
at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:246)
OK, I’ve created a new blank report in JasperStudio, and added the existing sub-reports. This appears to have corrected the JRXML parsing errors. The output report appears blank though, this is due to an incompatibility with the date parameters. Is it possible to format the date in a way that MySQL/MariaDB can understand it?
I have worked out that the original execption was misleading. The problem was not with the sub-reports, but rather with the image. Replaceing the image URL with the id link generated in the filesystem, fixes this problem, but this isn’t portable. Is there a way of using a relative URL for an image in a report, so that the report can be ported to another server if needed?
Also, I have worked around the date format issue, but using DATE_TO_STR in the SQL query, but this too isn’t portable. Is there an example somewhere of how to use the .format function with a date parameter?
Thank you for your inquiry. Currently, there is no active ReportServer support package associated with your account.
To assist you efficiently and individually, you can find a selection of suitable service packages on our website ( Shop - Reportserver ).