Struts2-jasperreports-plugin与较新版本的japserreports无法正常运行

时间:2017-04-03 18:24:04

标签: java struts2 jasper-reports

我正在使用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),这似乎是一个由struts2-jasperreports-plugin调用的函数,它在jasperreports 6+中不存在。我一直在寻找,但无法找出是否/如何改变这种行为,并开始认为我需要更新我的插件版本。

有没有办法更改插件调用的函数,或者我是否需要更改struts的版本以获得我期望的行为?是否可以为插件编写适配器?

1 个答案:

答案 0 :(得分: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已返回,通过更改Error generating JasperReport in Development mode上找到的正在运行的Java版本来“修复”。

因为我正在使用在Java 6上运行的遗留系统,所以我放弃了,因为原始问题是基于JRE而不是糟糕的Jasperreports库或struts插件。

相关问题