使用 Jaspersoft Studio 设计好了报表模板并测试通过,然而在集成到应用中时抛出 NoClassDefFoundError:net.sf.jasperreports.functions.standard.DateTimeFunctions 错误。
1 分析
因为报表中有用到 DATEFORMAT 日期格式化函数,所以应该是相关的 jar 没有引入的缘故。
2 解决
在中央库中找不到 jasperreports 相关的函数包,后来在 Jaspersoft Studio 文件夹下才找到。也可以从这里下载
把 jasperreports-functions.jar 作为第三方包加入本地仓库,然后在 pom.xml 中加入下列依赖即可:
<!-- 报表函数-->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>6.3.1</version>
</dependency>
<!-- 时间处理函数-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
因为 jasperreports-functions 内部使用 joda-time 来处理时间,所以这里也需要引入 joda-time 哦O(∩_∩)O~