1.下载japerreports:
网址:
https://sourceforge.net/projects/jasperreports/最好下载完整的zip包:jasperreports-1.3.0-project.zip
这样可以得到所有的文件,包括src,samples。
2.下载到jasperreports-1.3.0-project.zip包后,解压一看,本身是一个project,有.project,.classpath文件等,于是想到可以把它做为一个project导入eclipse中,于是把它拷贝到eclipse的workspace中,然后“import”,即可整个jasperreport工程导入到ecplise了!
注意:我刚开始导入时总出错,提示"Invalid project description",无法导入;后来鬼使神差的把解压后的工程名称"jasperreports-1.3.0"改为"jasperreports"就顺利导入了!
再后来,想把工程改为别的名称,但是import时指定工程根目录后,压根就无反应,"finish"按钮始终是灰色的,无法导入;
最后问了一下wwm,才是知道如果要import a project,则project名称要与.project文件的<name></name>中的名称一致,否则无法导入!
例如,工程名称(根目录)为jasperreports,那么.project中应为:<name>jasperreports</name>;
前面是凑巧改对了。
3.但是导入到eclipse后,它是做为一个java project的,也就方便看源代码而已,到底要怎么才能运行生成报表呢?这就需要ant来执行build.xml。
4.如果没有接触过ant,没关系,很简单的,放心吧。推荐看《java 学习笔记》良葛格 附录A Ant简介(网上搜电子版的即可),15分钟即可搞定ant,不要被它挡路了哦:)
5.并且,eclipse中就自带ant,如果要运行"demo\samples\barbecue"示例,进入"jasperreports\demo\samples\barbecue",右键"build.xml",选"run as->ant build..",把"javac","compile","fill","view"都打上勾,点"run",ant开始运行该build.xml,不一会,哇,看到报表了!好激动!不过这个报表只有表,没有图,即:看不到自己想要的折线图,柱状图,饼图等。
6.看了一些"demo\samples"下的所有示例,觉得折线图,柱状图,饼图等应该都是在"charts"示例中,意识运行"charts"示例的build.xml文件,但是不能编译通过,提示错误:
javac:
[javac] Compiling 2 source files to E:\jiangcm\workspace-forict-myeclipse\jasperreports\demo\samples\charts
[javac] 注意: E:\jiangcm\workspace-forict-myeclipse\jasperreports\demo\samples\charts\ChartsApp.java 使用了未经检查或不安全的操作。
[javac] 注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。
compile:通过,略.
fill:
java.sql.SQLException: Connection is broken: Connection refused: connect
at org.hsqldb.Trace.getError(Unknown Source)
……
view:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: MultipleAxisChartReport.jrprint
7.怎么办呢?上网查jasper的资料,折腾了大半天,还是没有任何进展,网上的资料都只简单的提到“需要ant”执行,唉,真是没办法。只好转向运行"webapp"示例,运行成功了!(详细看运行jasperreport的webapp示例一文)
8.实在不知道为什么最重要的charts示例无法运行,还是先踏踏实实看一下jasperreports的原理吧,于是认真看了"jasperreports 教程",了解到jasperreports的基本原理:
调用jasperreports的相应的库函数,把.jrxml编译为.jasper;->由.jasper生成.jrprint;->由.jrprint得到各种输出方式的报表。
理解到这一点后,自己就没再往下看,因为能够确定charts示例无法运行绝对与jasperreports的原理无关了。
9.于是,认真分析了一下编译提示的错误,发现主要就是因为编译无法通过造成的,以至于后面缺少对应的.jrprint文件。而编译不通过的原因是“[javac]要了解详细信息,请使用-xlint:unchecked重新编译”,在build.xml中相应位置加上编译参数:
<javac srcdir="src" destdir="${classdir}">
<compilerarg value="-Xlint:unchecked"/>
终于编译通过了!!(详细参见“Eclipse中报错"要了解详细信息,请使用-xlint unchecked重新编译"的解决方案”一文)
10.这时javac通过了,即ChartsApp.java编译通过了,但是fill和view这两步还是提示原来的错误,如下所示:
javac:
[javac] Compiling 2 source files to E:\jiangcm\workspace-forict-myeclipse\jasperreports-1.3.0-project\demo\samples\charts
[javac] E:\jiangcm\workspace-forict-myeclipse\jasperreports-1.3.0-project\demo\samples\charts\ChartsApp.java:115: 警告: [unchecked] 对作为普通类型 java.util.Map 的成员的 put(K,V) 的调用未经检查
[javac] parameters.put("MaxOrderID", new Integer(12500));
[javac] ^
[javac] 1 警告
compile:
fill:
java.sql.SQLException: Connection is broken: Connection refused: connect
at org.hsqldb.Trace.getError(Unknown Source)
view:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: MultipleAxisChartReport.jrprint
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
其中fill这一步提示的是SQLException的错误,难道是要配置数据源或者是要运行什么东西?
再看fill的出错提示:"
at org.hsqldb.Trace.getError(Unknown Source)",对了,好像"demo"文件夹里有"hsqldb"文件夹,是不是要先运行"hsqldb"文件夹的内容??试试。
10.于是ant编译"demo\hsqldb"的build.xml;提示:server is running...
应该是数据库启动了;
11.接着ant编译"demo\samples\charts"的build.xml;顺利fill,耶!看到曲线图、柱状图等报表了!
12.备注:关掉报表再直接运行一次charts的build.xml,还能正确看到报表;关掉eclipse再运行,也也还能正确看到报表;看来hsqldb只要运行过一次,以后就都有效了!至于原理就不太明白了,难道是hsqldb运行过之后就永久的把数据导入到工程的报表中了?有待以后学习验证了。
13.小结:
运行jasperreports示例,关键是要注意和解决三个问题:
1)import project时,工程名称要与.project文件中"<name></name>"中的名称一致,否则无法导入;
2)jdk版本兼容的问题:
加入编译参数:<compilerarg value="-Xlint:unchecked"/>
3)要先运行一下"demo\hsqldb"下的build.xml,启动数据库导入数据,才能fill报表,运行显示报表;
ok!
以上步骤重复验证过两三次均无问题,按上述步骤保证就能运行jasperreports提供的charts关键示例了!
posted on 2007-01-29 14:25
matthew 阅读(806)
评论(0) 编辑 收藏 所属分类:
报表设计与开发