隨筆 - 251  文章 - 504  trackbacks - 0
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 204296
          • 排名 - 283

          最新評論

          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]?java.sql.SQLException:?Connection?is?broken:?Connection?refused:?connect
          ?????[java]?at?org.hsqldb.Trace.getError(Unknown?Source)
          ?????……
          view:
          ?????[java]?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]?java.sql.SQLException:?Connection?is?broken:?Connection?refused:?connect
          ?????[java]?at?org.hsqldb.Trace.getError(Unknown?Source)
          view:
          ?????[java]?net.sf.jasperreports.engine.JRException:?java.io.FileNotFoundException:?MultipleAxisChartReport.jrprint
          ?????[java]?at?net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
          其中fill這一步提示的是SQLException的錯誤,難道是要配置數據源或者是要運行什么東西?
          再看fill的出錯提示:"[java]?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 閱讀(820) 評論(0)  編輯  收藏 所屬分類: 報表設計與開發
          主站蜘蛛池模板: 嫩江县| 聂荣县| 河北区| 长春市| 文水县| 米林县| 嘉善县| 太原市| 会理县| 沁水县| 五大连池市| 中江县| 玛沁县| 淮安市| 临猗县| 永年县| 溧阳市| 兰溪市| 曲阳县| 德昌县| 玉田县| 元谋县| 盐亭县| 洞头县| 手游| 威信县| 巢湖市| 张家川| 驻马店市| 祁门县| 苗栗市| 灵宝市| 屯留县| 泰顺县| 泸定县| 巴里| 茌平县| 南木林县| 兴国县| 淮阳县| 临泽县|