iReport+JasperReports Server開發過程的Troubleshooting

本文涉及的內容:主要是實現一個subreport的masterreport成功在JasperReports Server(下文簡稱爲JRS)上生成報表。

首先是使用iReport分別設計masterreport和subreport,並preview成功;然後再將這兩份報表模版在JasperReports Server上連接數據源,並最終生成報表。


問題1: No suitable driver found for jdbc:mysql

背景:在使用iReport設計報表模版,使用到subreport的時候,一般都是設計好subreport之後,將subreport嵌入masterreport使用,然而在嵌入subreport的時候,需要定義一個連接,比如: java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname","username","passwd") ,但是最後生成報表preview的時候會報錯No suitable driver found for jdbc:mysql。

問題解決:

這最主要還是個driver的問題,關於這個,則必須要將mysql-connector.jar放到正確的位置:
可以參考:http://community.jaspersoft.com/questions/534375/multi-database-issue-lets-see-if-someone-can-help

其中主要的內容爲:
OK, here is the solution for Ubuntu 10.10 with netbeans 6.8 and 6.9.1, plus iReport, please post here where you find other solutions as well, as this applies on Windows as well. 
Forget the classes folder, the driver has to be located in this folder to have it working correctly:
/usr/lib/jvm/java-6-sun-1.6xxxx/jre/lib/ext (xxx for whatever revision you have).

我的jar包爲: mysql-connector-java-5.1.7-bin.jar。關於這個目錄地址,肯定不完全一樣,視具體情況而需靈活運用。



問題2:JRS創建MySQL數據源時拋出Driver找不到的異常

背景:當使用iReport設計完兩個報表模版的之後,需要在JasperReports Server上實現這個功能。首先需要創建數據源,但是在JRS創建數據源之後,當嘗試連接測試的時候,會顯示連接失敗,運行reports的時候就會報錯:com.jaspersoft.jasperserver.api.JSExceptionWrapper: com.mysql.jdbc.Driver。也就是在找不到MySQL的驅動,而它默認是會安裝postgresql的驅動的。

問題解決:

關於這個問題,官網上也有一些解答:http://community.jaspersoft.com/questions/540839/jasper-42-commysqljdbcdriver-problem

將mysql-connector-5.1.7-bin.jar放入tomcat目錄下的lib文件夾下,也就是目錄/opt/jasperreports-server-5.0.1/apache-tomcat/lib,並使用腳本重啓JasperReports Server(沒有重啓的時候,也試過,不行,可能JRS只是在啓動的時候加載驅動jar包,而不是動態的加載)



問題3:subreport從iReport遷移到JRS時出錯

背景:在iReport中,設計好了加有subreport的主表,並且preview成功,希望轉移到JRS生成報表。JRS實現:創建兩個數據源,創建兩個report,master和sub,分別連接一個數據源,master包含sub,最終生成一個表。如果直接按普通流程操作的話,會報錯:net.sf.jasperreports.engine.JRRuntimeException: Parameter "DATABASE_TIMEZONE" does not exist.

問題解決:

JRS實現

Step1. 上傳兩個數據源,masterCon和subCon,然後上傳subreport,並將它與subCon綁定。

Step2. 在本地打開masterreport.jrxml文件,關於其中subreport的配置,部分需要修改:
<defaultValueExpression><![CDATA["repo:subreport"]]></defaultValueExpression>
<subreportExpression><![CDATA["repo:subreport"]]></subreportExpression>

注意紅色的書寫格式,引號和冒號。

Step3. 上傳masterreport,並上傳subreport.jrxml。如果選擇subreport.jasper文件的話。會報錯:com.jaspersoft.jasperserver.api.JSExceptionWrapper: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.

Step4. 成功運行。



轉載清註明出處。

本文檔更多出於我本人的理解,肯定在一些地方存在不足和錯誤。如果你對這方面感興趣,並有更好的想法和建議,請聯繫我。

我的郵箱:[email protected]

新浪微博:@蓮子弗如清 



發佈了47 篇原創文章 · 獲贊 10 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章