当前位置: 代码迷 >> ASP >> JasperReports应用Scriptlet时,JRAbstractScriptlet的每个方法被执行了两次
  详细解决方案

JasperReports应用Scriptlet时,JRAbstractScriptlet的每个方法被执行了两次

热度:417   发布时间:2012-11-15 15:16:15.0
JasperReports使用Scriptlet时,JRAbstractScriptlet的每个方法被执行了两次
在JasperReports中使用了scriptlet,发现继承自JRAbstractScriptlet 的每一个方法对于每一条记录都被执行了两次,而实际上只会被执行一次。后来发现这是classpath下有两个“重复”的jar包导致的。我把JasperReports3.6.1发行包dist下的jasperreports-3.6.1.jar和jasperreports-javaflow-3.6.1.jar两个jar包都放到了工程lib下,这两个jar包里的内容很多是相同的,它们也都有net.sf.jasperreports.engine.JRAbstractScriptlet类。删除jasperreports-javaflow-3.6.1.jar后就正常了(在JasperReports网站发行包下载页已标注该包是Optional)。
至少到3.6.1版本,都还有这个问题,也算是一个Bug了,因为通常情况下,系统找到一个可用的类后就不会再到其他的jar包里寻找了,而JasperReports会继续到其他的jar包中寻找同样可用的类。
  相关解决方案