抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法

业务报表复杂,所以使用了子报表来实现。在 Jaspersoft Studio 测试通过。 Jaspersoft Studio 中的所有报表(包含子报表)都放在项目文件夹下:

抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法_第1张图片

在应用中也是放在同一个目录下:

抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法_第2张图片

按理来说应该不会有问题的呀……

1 分析

查看 Jaspersoft Studio 说明文档时,发现这样一段关于模板路径的说明:

抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法_第3张图片

原来,模板路径是按照以下的方式解析处理的:
1. 模板路径字符串先按照 URL 来解析。
2. URL 解析失败后(抛出 MalformedURLException 异常),就按照文件实际路径来解析。
3. 如果还是无法解析,就以 classpath 作为根目录解析。

如果以上解析方式都失败了,就会抛出 JRException: Resource not found at xxx.jasper 异常咯。

2 解决

在 Jaspersoft Studio 的 Source 页签(源代码)中,把子报表的模板路径修改相对于 classpath 的路径:

抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法_第4张图片

然后重新编译后,放入应用中,就可以测试通过咯O(∩_∩)O~

为了避免在 Jaspersoft Studio 中抛出错误,我们可以在 Project Explorer 中也新建一个 report 文件夹,然后把子报表模板放进去。这样以后不管是应用程序还是 Jaspersoft Studio 中就都可以正常执行啦O(∩_∩)O~

你可能感兴趣的:(Java,Java,报表)