Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(一)
2017-03-04 10:06
741 查看
前言
最近开发项目要用到报表开发,网上一搜基本上都是运用Jasperreport进行报表开发,不仅因为Jasperreport功能强大运用Java开发,还因为该项目是使用LGPL协议开源的,故可以自由运用在私有项目上只要你不修改它的源码。现在网上搜到Jasperreport的基本都是配合ireport进行开发的,而且版本基本都是6.0以前的。 进入Jasperreport项目的官网发现有一个软件叫Jaspersoft studio的,它的版本也是6.3.1跟Jar包版本一致,百度一下才知道IReport已经不再进行版本更新了,现在改用Jaspersoft studio进行开发了,该软件是基于Eclipse开发的,当然也是开源免费的。
我将自己运用Jasperreport+studio进行开发的一些经验进行整理,希望对大家有用。
准备工作
到Jasperreport开发公司官网Jaspersoft community下载Jar包,最好是下载Project包,还有模板开发软件Jaspersoft studio。下载链接 点击Libray和studio进行下载,点击之后会弹出让你注册或者登录的界面,可以点击右下角的NoThanks跳过直接来到下载界面,稍等片刻便会弹出下载对话框。
下载Jasperreposrt6.3.1的Project包后解压,里面的结构如下。
重点文件夹我都做了标识,demo是一些案例。首先来了看第一个文件夹dist,点进去之后里面放着Jasperreport6.3.1的Jar包,还有其它两个相关的包。
第一个文件夹doc里面放着Jar包的Api说明,还有Jasperreport的用户指南,如果你英文好的话可以详细读读。
接下来的文件build.xml是一个非常值得注意的点,由于JasperReport可以用ant工具进行构建,所以这个Project包里的案例都是默认用ant才能运行的,不了解ant的同学可以百度一下ant的教程。
强烈建议安装一个ant构建工具,反正也不大,因为后面会用的到,而ant都是基于build.xml进行构建项目的,所以这里有个build.xml文件。当安装好ant之后,用cmd进入当前项目,可以直接在当前目录的地址栏里输入cmd,然后直接打ant命令,就会开始构建项目了。
那这个ivy.xml又是什么呢,点开看看。
<ivy-module version="2.0"> <info organisation="net.sf.jasperreports" module="jasperreports"> <license name="GNU Lesser General Public License" url="http://jasperreports.sourceforge.net/license.html" /> <description homepage="http://jasperreports.sourceforge.net">JasperReports Library</description> </info> <configurations defaultconf="compile" defaultconfmapping="compile->*"> <conf name="compile" description="dependencies for compile"/> <conf name="docs" description="dependencies for docs" extends="compile"/> <conf name="javaflow" description="dependencies for javaflow" extends="compile"/> <conf name="test" description="dependencies for test" extends="compile"/> </configurations> <dependencies> <dependency org="antlr" name="antlr" rev="2.7.5"/> <dependency org="com.adobe.xmp" name="xmpcore" rev="5.1.1"/> <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.1.4"/> <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="2.1.4"/> <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.1.4"/> <dependency org="com.google.zxing" name="core" rev="3.2.1"/> <dependency org="com.lowagie" name="itext" rev="2.1.7.js5"/> <dependency org="commons-beanutils" name="commons-beanutils" rev="1.9.0"/> <dependency org="commons-collections" name="commons-collections" rev="3.2.2"/> <dependency org="commons-digester" name="commons-digester" rev="2.1"/> <dependency org="commons-lang" name="commons-lang" rev="2.6"/> <dependency org="commons-logging" name="commons-logging" rev="1.1.1"/> <dependency org="com.ibm.icu" name="icu4j" rev="57.1"/> <dependency org="javax.persistence" name="persistence-api" rev="1.0"/> <dependency org="javax.servlet" name="servlet-api" rev="2.4"/> <dependency org="jaxen" name="jaxen" rev="1.1.1"/> <dependency org="mondrian" name="mondrian" rev="3.1.1.12687"/> <dependency org="net.sf.barcode4j" name="barcode4j" rev="2.1"/> <dependency org="net.sourceforge.barbecue" name="barbecue" rev="1.5-beta1"/> <dependency org="net.sourceforge.jexcelapi" name="jxl" rev="2.6.10"/> <dependency org="org.apache.ant" name="ant" rev="1.7.1"/> <dependency org="org.apache.commons" name="commons-javaflow" rev="20160505"/> <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.3.4"/> <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.3.2"/> <dependency org="org.apache.lucene" name="lucene-analyzers-common" rev="4.5.1"/> <dependency org="org.apache.lucene" name="lucene-core" rev="4.5.1"/> <dependency org="org.apache.lucene" name="lucene-queryparser" rev="4.5.1"/> <dependency org="org.apache.poi" name="poi-ooxml" rev="3.10.1"/> <dependency org="org.apache.poi" name="poi" rev="3.10.1"/> <dependency org="org.apache.velocity" name="velocity" rev="1.7"/> <dependency org="org.apache.xmlgraphics" name="batik-anim" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-awt-util" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-bridge" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-css" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-dom" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-gvt" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-svg-dom" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-svggen" rev="1.8"/> <dependency org="org.apache.xmlgraphics" name="batik-util" rev="1.8"/> <dependency org="org.beanshell" name="bsh" rev="2.0b4"/> <dependency org="org.codehaus.castor" name="castor-core" rev="1.3.3"/> <dependency org="org.codehaus.castor" name="castor-xml" rev="1.3.3"/> <dependency org="org.codehaus.groovy" name="groovy-all" rev="2.4.5"/> <dependency org="org.eclipse.jdt.core.compiler" name="ecj" rev="4.3.1"/> <dependency org="org.hibernate" name="hibernate-core" rev="3.3.2.GA"/> <dependency org="org.jfree" name="jcommon" rev="1.0.23"/> <dependency org="org.jfree" name="jfreechart" rev="1.0.19"/> <dependency org="org.mozilla" name="rhino" rev="1.7.6"/> <dependency org="org.olap4j" name="olap4j" rev="0.9.7.309-JS-3"/> <dependency org="org.ow2.asm" name="asm-all" rev="4.0" conf="javaflow->*"/> <dependency org="org.springframework" name="spring-beans" rev="2.5"/> <dependency org="org.springframework" name="spring-core" rev="2.5"/> <dependency org="xalan" name="xalan" rev="2.7.2"/> <dependency org="xml-apis" name="xml-apis-ext" rev="1.3.04"/> <dependency org="xalan" name="serializer" rev="2.7.2" conf="docs->*"/> <!-- <dependency org="com.keypoint" name="png-encoder" rev="1.5"/> <dependency org="javax.xml.soap" name="saaj-api" rev="1.3"/> <dependency org="org.apache.xmlgraphics" name="batik-script" rev="1.7"/> <dependency org="org.testng" name="testng" rev="6.8.1"/> <dependency org="log4j" name="log4j" rev="1.2.17"/> <dependency org="net.sf.jasperreports" name="jasperreports-fonts" rev="4.0.0"/> --> </dependencies> </ivy-module>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
有没感到头晕,有没看到许多的dependency,没错这个就是依赖库的构建,当你运行ant命令后,就会从远程仓库下载所有这些Jar包。
注意:这一步是非常重要的,如果你要用最新版的6.3.1进行开发,那么你必须得要有上面xml里面的所有包,而且版本一定要对应。否则当你导入JaserperReport Jar包到项目后,你会发现一调用方法填充模板生成PDF或者HTML就会出现各种ClassNotFount异常,像下面这个Jar类库
<dependency org="org.apache.xmlgraphics" name="batik-bridge" rev="1.8"/>
它是apache基金会开发的一个图像处理类,如果你用的1.7版本或者以下的版本,那么你就会一直报下面这个错误,当初为了解决这个问题,我真是踩了很多坑,最后才发现这个类只有在1.8版本才增加进去的。
java.lang.ClassNotFoundException: org.apache.batik.bridge.FontFamilyResolver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)1
2
3
4
1
2
3
4
ant安装时需要注意的是要在其安装目录下的lib文件夹导入ivy.jar这个包,需要自行下载,下载jar包传送门。如果没有这个ivy.jar,在运行ant命令后,会报下面的错误。
当运行ant命令后,如果出现下面的画面,那么恭喜你已经开始了漫长的下载jar的过程,这个时间可能很久很久。
ant构建的jar包默认放在C盘的用户文件夹下面,有个.ivy的cache文件夹,里面放的就是下载的缓存jar包了,这时可以慢慢地收集jar包了。
当初我创建一个Java web项目时,想生成图表,报一个错导一个包,导了很多包后才发现我要导的包都写在这个ivy.xml文件里。当然如果用ant构建的话有可能会遇到网络问题,下载不了有些jar包,毕竟是外国的网站,能下多少就下多少吧,没有的再去其它地方下。我的Jar包有一些是IReport软件里的lib目录拉过来的。
jaspersoft studio就这点不好,不知道要去哪里找到所有的工程需要用到的jar包。在软件安装目录里jaspersoftstudio\plugins,也可以找到一些类,但不是很全。要做一个报表所依赖的包相当的多,当然最后我也会把我可以运行的项目Demo提供出来供大家参考。
相关文章推荐
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(六)-模板元素详解
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(一)-项目简述
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(八)-Mysql数据源
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(八)-Mysql数据源
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(四)-java输出报表
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(三)
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(一)-项目简述
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(五)
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(七)-PDF中文显示
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(七)-PDF中文显示
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(三)-传参模板设计
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(二)-报表原理简述
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(六)-模板元素详解
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(二)-报表原理简述
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(五)-实体类集合数据源
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(六)
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(二)
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(五)-实体类集合数据源
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(四)-java输出报表
- Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(四)