2017-04-03 71 views
0

我正在使用struts 2.3.4.1,並使用struts2-jasperreports-plugin來顯示預編譯的報告。字體一直給我提出問題,我發現這些問題應該在Jasperreports 6中解決(特別是Calibri問題)。因爲我在運行java 6的遺留系統上,所以我可以使用的最後一個版本是6.2.2。但是當我嘗試顯示我的報告時,我得到了java.lang.NoSuchMethodError: net.sf.jasperreports.engine.util.JRLoader.loadObject(Ljava/lang/String;)Ljava/lang/Object; org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:323),這似乎是由jasperreports 6+中不存在的struts2-jasperreports-plugin調用的函數。我一直在環顧四周,但無法確定/如何改變這種行爲,並開始認爲我需要更新我的插件版本。Struts2-jasperreports-plugin無法運行更新版本的japserreports

有沒有辦法改變插件調用的函數,還是我需要更改struts的版本以獲得我期望的行爲?是否可以爲插件編寫適配器?

回答

0

一些故障排除後,我發現https://stackoverflow.com/a/37864625/892327其中適配器使用現有的代碼,這是我從http://grepcode.com/file/repo1.maven.org/maven2/net.sf.jasperreports/jasperreports/6.1.0/net/sf/jasperreports/engine/util/JRLoader.java/做了,並添加缺少的loadObject(String fileName)功能作爲loadFromFile(String fileName)的適配器。其中清除了NoSuchMethodError。

但是,原始問題java.lang.ArrayIndexOutOfBoundsException: 0 sun.font.ExtendedTextSourceLabel.createCharinfo(ExtendedTextSourceLabel.java:592返回,它是通過更改我在運行的Java版本「找到的」,在Error generating JasperReport in Development mode處「修復」。

因爲我正在使用運行在Java 6上的遺留系統,所以我放棄了,因爲原來的問題是基於JRE而不是錯誤的Jasperreports庫或者struts插件。