后来一直在用iReport-0.5.0可视化作报表(其自带的jasperreports-0.6.7.jar 报表组件)模板;但前几天头说以后可以让客户自己定制报表,不用iReport进行设计。让我以后会用自由定制表的方式查询结果要以b报表的形式显示,所以我下载的jasperreports-1.0.0.jar 进行用Java代码对.jrxml文件进行设计操作,最终实现了动态自由设计报表功能最终以报表的形式显示。
但问题出现了:我把原来用iReport0.5.0作的报表模板.jasper文件和我用程序生成的.jasper放在我用jasperreport-1.0.0.jar的应用下,进行运行,结果是原来用iReport-0.5.0可视化作报表(其自带的jasperreports-0.6.7.jar 报表组件)模板提示不能load file Exception ,我就有些不解了,应该jasperreports-1.0.0.jar 兼容了0.6.7啊!难道开源的东西就如此“无理”吗? 最后我排除了其他一切可以发生的异常,打开jasperreport-1.0.0.jar 和jasperreports-0.6.7.jar 比较了一下,简直是不感相信:包多了、类多了,原来的类文件内容变了,不过这也许是正常的;但不正常的就是1.0.0 不能运行0.6.7的模板啊。
我最后想到了把两个.jar包都用,但出现了引用冲突;后来我气氛的把1.0.0的源代码在Eclipse3.0中打开(因为有重构功能),后把所以的类名后面加了10,经过编译没有出现任何错误,我高兴的重新打包起名为:jasperreport10-1.0.0.jar ;好了这下我高兴及了,因为我会在引用类时判断模板的,如原来在0.6.7的模板调用原来的,1.0.0的模板我调用我现在改了名的。 但是经过测试,还有异常出现,说明虽然改了所有的类名,里面直接的调用没变。我想到了,那就把最上面层的包名后面加“10”吧,但在Eclipse里面提示修改错误,不能改了。
^_^。。。。。
这下彻底的傻根了!
半天的思考,我突然想起我在MSN上还有作报表的网友,问问他们遇到过如此的问题吗?
就这样,我问了一位,哦,他说他没有遇到过,但是现在已经有iReport0.5.1了,你用她来作原来用
iReport0.5.0作的模板在jasperreport.1.0.0.jar 下运行,看会不出现问题。我下载了,马上试了,好好好,
好了,因为iReport0.5.1自带了jasperreport.1.0.1.jar,我就决定用jasperreport.1.0.1.jar来代替我用来用的
jasperreport.1.0.0.jar和jasperreports-0.6.7.jar ,最后一试,都好了!原来jasperreport.1.0.1.jar解决了所
有的问题。
现在想来:开源的东西用的时候还要以反常的心态考虑的,不能不信,不能全信。希望大家引以为见
吧!