1. 概述
使用者在使用設計器時會遇到設計器範本報存失敗或範本無法開啟等情況,但是不知道如何定位問題或者解決問題,本文根據常見的客戶 bug 原因及範本儲存機制,整理出了標準有關範本問題的解決方案,使用者可以根據自己遇到的實際情況進行排查並解決問題。
1.1 報表檔案儲存機制
2. 範本建立常見問題
2.1 範本建立失敗
問題描述:範本建立失敗
解決方案:通常是權限的問題,可以檢查遠端設計權限和伺服器目錄權限
2.2 建立的為決策報表(frm)但生成了空白的普通報表(cpt)
問題描述:建立的為決策報表(frm)但生成了空白的普通報表(cpt)
解決方案:為新自適應插件的問題,禁用或升級插件即可
2.3 編輯範本的程式中設計器出現畫面撕裂
問題描述:開啟設計器新增一個決策報表後,滑鼠所到之處皆為撕裂畫面,無法正常使用。
原因分析:與電腦配置的顯卡有關。
解決方案:
1)FineReport配置檔案修改,進入設計器安裝路徑的bin目錄下,找到 designer.vmoptions 檔案,如下圖所示:
2)修改檔案designer.vmoptions資訊:-Dsun.java2d.d3d=false,這段設定的意思是:關閉 JAVA 3D功能(Direct3D,有時候Direct3D功能可能導致JVM Crashed,預設是開啟(true),屬於Java Swing 2D系統屬性參數。如下圖所示:
3)重啟設計器即可解決畫面撕裂問題。
3. 範本開啟常見問題
設計器當前開啟範本需經過以下校驗:
1)當前開啟範本是否有被他人鎖定。
2)當前範本結構(xml)是否正常。
若均正常,則會正常開啟範本。若無法開啟,排查思路如下:
1)查看日誌報錯:可以根據具體報錯看下是不是插件的問題,可能是擴展圖表插件的問題。
2)若日誌中無有效資訊,有可能是 xml 損壞。
注:設計器遠端連結伺服器設計範本的常見問題請參考:遠端設計常見問題 。
3.1 開啟 frm 出現空白 cpt
問題描述:開啟 frm 出現空白 cpt
解決方案:新自適應插件問題,禁用或升級插件即可
3.2 預覽報表無法啟動瀏覽器
問題描述:在對報表進行分頁預覽,可能會遇到如下兩種無法在 B/S 端展現報表的情況,無法啟動瀏覽器,彈窗顯示:
解決方案:設定電腦的預設瀏覽器。
3.3 設計器無法預覽所有範本
問題描述:設計器點選預覽無法跳轉範本,建立範本也不行,報錯:ERROR [standard] --job class not found, jobKey: DATA_PREPARE.DATA_PREPARE_FR-FB001
解決方案:設定更換電腦的預設瀏覽器或者安裝預設瀏覽器插件
3.4 瀏覽器頁面預覽提示:無法存取此頁面
問題描述:點選預覽後,瀏覽器顯示:無法存取此頁面
原因分析:設計器本地預覽產生該問題,多數是內建伺服器啟動失敗導致。
解決方案:
1)確認內建伺服器是否開啟。綠色三角標,此時代表開啟狀態。若為紅色方塊或無此圖示,則內建伺服器啟動失敗。如下圖:
2)確認是否設計器埠問題
若修改了設計器預設埠後未重啟。需重啟設計器即可
設計器和本地伺服器的tomcat出現埠占用。可參考:埠占用查看
3)系統安裝了殺毒軟體或者系統防火牆阻擋,關閉殺毒軟體/防火牆,重新點選預覽按鈕(自動啟動內建伺服器)即可。
4)若為設計器安裝問題
若設計器安裝目錄為C盤,則以管理身分啟動或重新安裝設計器。
若設計器位數和作業系統位數不匹配,重新下載安裝位數相符的設計器。
3.5 點選預覽按鈕,跳轉到瀏覽器頁面,範本頁面空白
原因分析:
1)瀏覽器快取問題,若使用IE瀏覽器預覽空白其他瀏覽器正常,則有相容問題,
2)設計器快取檔案的問題:設計器同時多次啟動或非法關閉(設計器進程未關閉乾淨),導致使用者目錄下設計器快取檔案異常,範本出現預覽為空白的現象。
3)範本本身問題
範本檔案過大
使用了全局參數之類的伺服器資料,全局參數計算異常
參數面板的元件資料字典的資料量過大,或資料字典預設值異常
有載入起始或結束事件,導致異常等
範本本身效能問題,導致範本載入動畫前有一大段空白期,瀏覽器頁面看起來像是沒有反應。
4)embed的finedb裏面的db.lobs被刪掉了,導致讀取不到二進制的內容,後台報錯:com.fr.third.org.hibernate.HibernateException: IOException occurred reading a binary value,範本預覽空白。
解決方案:
1)清理瀏覽器快取後
檢查相容性檢視表:先看下是否開啟了相容性檢視表:(一般不要開啟相容性檢視表),因為相容性模式預設文檔模式是ie5,可能範本中的一些js不支援ie5
排查插件影響:大部分問題都是插件引入的js不支援低版本的ie,或者是第三方插件沒有做相容。排查出是某個插件引起的,可以提bug
中文範本名的問題:js中有中文的範本在ie無法載入,嘗試下英文名的範本能否正常載入,如果可以,則中文範本加encode編碼即可
2)關閉設計器進程,清除C盤使用者目錄下的.fineRepot100或.fineRepot110(可以先將該檔案移出去,FineReportEnv.xml中有激活碼注意保留),重啟設計器。
3)根據範本具體分析,修改相關設定。關掉平台-系統管理-快取-總是重新讀取範本,第一次慢,之後就好了。
4)把新的finedb裏面的db.lobs更換到工程裏面。
4. 範本儲存常見問題
4.1 範本儲存無法實時生效
問題描述:範本儲存無法實時生效
解決方案:
注:叢集環境需要先排查是否開啟了叢集快取。
1)由於平台設定了快取導致的,在「管理系統>抽數快取>快取配置」開啟了「總是重新讀取範本」,關閉後即可恢復正常。
2)若關閉「總是重新讀取範本」仍無法解決,可關閉新引擎即可恢復正常。
4.2 範本儲存為 0kb
問題描述:範本儲存為 0kb
原因及解決方案一:工程磁碟空間不足
1)使用「磁碟清理」功能,安全便捷的清理磁碟
2)參考文檔進行磁碟擴容:磁碟擴容
原因及解決方案二:
原因分析:linux中的檔案索引節點inodes滿了,透過df -i命令可以查inodes的使用率
解決方案:清理多餘檔案或者增加inodes數量
原因及解決方案三:
檢查下範本檔案名稱是否包含 ?* 等字元,去掉特殊字元即可
4.3 範本儲存失敗
問題描述:範本儲存失敗
解決方案:
1)檢查伺服器 JAR 和設計器 JAR 版本是否一致,若不一致換為一致的 JAR。若版本一致,檢查是否缺少 JAR,詳情請參考:JAR包異常檢測
2)查看日誌報錯資訊
報錯資訊為:because there was insufficient free space available after evicting expired cache entries,此為 Tomcat 環境問題,需要提高最大快取值
報錯資訊為:socket write error,此問題發生在某些安裝了 IPv6 TCP 堆疊的 Windows 系統上,為網路問題,新增jvm配置項-Djava.net.preferIPv4Stack=true
報錯資訊為:nginx 413報錯,限制了請求大小(範本大小超出),修改nginx的body size配置項
報錯資訊為:write account error,為操作者權限不夠導致檔案修改儲存不成功,修改資料夾權限
3)若日誌無異常,可查看具體問題表現
僅某個範本儲存不了:可能是 post 請求,size 大小預設限制為 2m 導致,修改 tomacat 的 post 請求大小即可
所有範本都儲存不了(建立範本無法儲存、舊範本也無法儲存):多數是權限問題,查看下伺服器目錄權限。
4.4 範本儲存未生效
4.4.1 修改範本後BS瀏覽結果不變
問題描述:改了範本,在瀏覽器中存取卻還是原來的結果,沒有改過來。
原因分析:瀏覽器存取過一個頁面後,會將結果快取一段時間。修改範本後再次預覽,存取路徑相同,參數相同,瀏覽器會直接載入之前快取的結果,導致效果沒有變化。
解決方案:清空瀏覽器歷史記錄,重新整理頁面即可看到修改後的效果。
4.4.2 修改了範本某些設定預覽時範本沒有變化
解決方案:清理瀏覽器快取後,檢查修改內容是否進行了正確的配置,例如參數名是否和參數元件進行綁定等。
4.5 設計器異常關閉導致範本檔案丟失為 temp 檔案
問題描述:設計器異常關閉導致範本檔案丟失為 temp 檔案
解決方案:可以透過改後綴為 cpt 或 frm 恢復檔案
4.6 儲存範本時出現提示
問題描述:儲存時出現提示:儲存時發現範本鎖定資訊不一致,是否生成備份檔案
解決方案:原因為儲存時 uuid 不一致,可能是因為:
1)編輯程式中被管理者強制解鎖,可參考:遠端設計範本鎖定
2)切換工作區間
5. 範本預覽常見問題
5.1 無法正常預覽
問題描述:範本無法正常預覽,點選預覽沒反應
解決方案:
1)查看預設瀏覽器設定,修改下預設瀏覽器
2)安裝插件:預設瀏覽器插件
5.2 預覽效果與範本實際效果不一致
問題描述:預覽效果與範本實際效果不一致
解決方案:由於平台設定了快取導致的,在「管理系統>抽數快取>快取配置」開啟了「總是重新讀取範本」,關閉後即可恢復正常。
5.3 設計能夠開啟報表,但預覽沒有反應
問題描述:設計器能夠開啟報表,但是點選預覽沒反應,報錯:cannot open the url Successful
解決方案:
1)預設瀏覽器設定問題(防火牆,殺毒軟體),一些殺毒軟體會自動改預設瀏覽器,絕大數情況下都是這個原因
2)遠端設計,先切換到本地工作區間,可以預覽報表,懷疑是jar包問題
3)url問題,直接預覽配置的遠端設計裏的url,存取報錯,發現ip地址最後多了一個空格
6. 亂碼問題
為什麼會出現亂碼:
編碼有很多種,當相互存取的兩端使用不同的編碼時,就可能會產生無法互相識別的情況,這是就產生了亂碼。
就像一個在中國的美國人,他說的英語如果被當做漢語來解析,就是一些大家無法理解的混亂語句,比如“I love you”解析成“哎老虎油”,是無法被理解的,就產生了亂碼。
設計器開啟範本顯示亂碼的主要原因有如下幾種:
1)語種顯示亂碼一般為缺少對應的語種字體。
2)設計器、伺服器、傳輸工具編碼不一致,導致遠端設計或傳輸後範本開啟顯示亂碼。
解決方法:
1)安裝對應語種的語言包,並安裝效能優化插件。
2)修改設計器、伺服器、傳輸工具編碼,使得三者編碼一致。有的時候使用者整合至自己的系統後,客戶頁面編碼一般不能修改,即使修改了,下次如果需要變動還要修改。這時我們使用 FR 內建 CJK 編碼,就不需要考慮頁面編碼和伺服器編碼的問題了。
6.1 設計器出現泰文亂碼
在設計器儲存格內或者公式編輯框內編輯泰文時會亂碼,如下圖所示:
儲存格:
公式編輯器
原因分析:設計器 OpenJDK 不支援顯示泰文。
解決方案:
將 JDK 安裝目錄下的%JAVA_HOME%\jre資料夾copy,改寫掉設計器安裝目錄下的%FR_HOME%\jre資料夾。
將 JDK 安裝目錄下的%JAVA_HOME%\jdk\lib目錄下的tools.jarcopy,複製到設計器安裝目錄%FR_HOME%\lib資料夾中。
注1:如果不引入 tools.jar ,設計器無法正常啟動。
注2:10.0 設計器要求 JDK 版本為:JDK 1.8 且小版本需在 JDK8u102 以上。
6.2 圖表中中文亂碼出現方框等
原因分析:方框是缺少中文字體的緣故。
解決方案:對應計算機系統,下載更新對應的中文字體庫。
6.3 泰語 韓語等小語種亂碼
解決方案:修改工程所在伺服器編碼設定為 UTF-8
6.4 設計器介面錯亂, 選單顯示成英文
原因分析:可能是上一次開啟的範本裏面用了當前環境裏不存在的插件元素
解決方案:Ctrl + N 建立一張範本後, 跳出設計器.再次啟動。
6.5 設計器資料庫查詢介面輸入亂碼
問題描述
資料庫查詢介面的 SQL 編輯區域中所有英文都顯示亂碼,如下圖所示:
解決方案:請參見:設計器資料庫查詢介面輸入亂碼
6.6 日文資料源預覽亂碼
問題描述
資料都是日語資料,資料在報表和資料庫中都是正常顯示的,但是用瀏覽器預覽就是亂碼
解決方案
正常顯示的日文字元和不能正常顯示的日文字元並非同一種字元,排查字體安裝包並安裝對應正確的字體包即可。