当前位置: 首页 > 知识库问答 >
问题:

JasperReports API:不同jar调用报表视图方法时出错

殷德本
2023-03-14

我的应用程序基于几个jar文件:login.jar、mainform.jar、reportview.jar。
登录jar调用mainform.jar,它也将调用report view.jar。

因此,在reportview类中,我有一个用JasperViewer显示报表的方法:

reportSource = Reportpath + getReportname() + ".jasper";

HashMap para = new HashMap();
para.put(getReport_param1(), getParam1());
para.put(getReport_param2(), getParam2());
para.put(getReport_param3(), getParam3());
para.put(getReport_param4(), getParam4());
para.put(getReport_param5(), getParam5());

JasperPrint jp = JasperFillManager.fillReport(reportSource, para, con);

JasperViewer.viewReport(jp, false);

因此,作为一个项目,它的运行100%正确和查看报告。

但是当我将这个类导入到mainform并调用reportview方法时,它没有运行。我将JasperReports-3.1.4.jar文件用于JasperReports库。当按其主要方法调用报表模块时,它可以正常工作。
但当从不同的jar调用时,它会出现此错误。

java.lang.ClassCastException:无法将Net.sf.JasperReports.Engine.base.JRBaseTextField实例分配给Net.sf.JasperReports.Engine.base.JRBaseLineBox.BoxContainer类型的字段Net.sf.JasperReports.Engine.base.JRBaseLineBoxContainer。Ream.ReadObject0(ObjectInputStream.java:1329)在java.io.ObjectStream.ReadObject(ObjectInputStream.java:351)在java.util.ArrayList.ReadObject(ObjectInputStream.java:351)在sun.reflect.NativeMethodAccessorInvoke0(原生方法)在sun.reflect.NativeMethodAccessorInvoke.Invoke(NativeMethodAccessorInvoke:39)在M.ReadObject0(ObjectInputStream.java:1329)在java.io.ObjectInputStream.DefaultReadFields(ObjectInputStream.java:1947)在java.io.ObjectInputStream.ReadSerialData(ObjectInputStream.java:1871)在java.io.ObjectInputStream.ReadObject0(ObjectInputStream.java:1753)在java.io.ObjectStream.jadOrdinaryObjectCalFiller.java:631)在net.sf.jasperreports.engine.fill.jrVerticalFiller.java:228)在net.sf.jasperreports.engine.fill.jrVerticalFiller.fillReport(jrVerticalFiller.java:128)在net.sf.jasperreports.engine.fill.jrBaseFiller.fill(jrBaseFiller.java:730)在net.sf.jasperreports.engine.fill.jrBaseFiller.fill

请帮我解决这个问题。

共有1个答案

薛滨海
2023-03-14

最后我发现了错误。它是因为一些其他项目(mainform.jar)导入旧版本的jasper库(1.2)。从mainform中删除该库解决了我的问题。

 类似资料:
  • 我对JSF有一个非常奇怪的问题,但我不能自己解决它,因为没有错误消息我可以谷歌搜索。问题是,我有一个视图提交一个新的文章或更新一个现有的文章。 方法getArticle()返回-if?id=x是通过url设置的-id为x的文章POJO。否则,一个纯粹的空的新文章。根据设置的id,模式editArticle被设置为true或false。 我使用了BalusC的检查表(在JSF中没有调用action方

  • 问题内容: 我想我在这里描述的可能有个名字,但我不知道。所以我的第一个问题是要知道这种技术的名称。 这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您发送的查询会超出实际需要。每2-3个字母发送一次请求,或者每100 ms最多发送一次请求就足够了。 因此,一种技术是安排在键入键之后立即执行的查

  • 我试图在TableView中实现以下内容: 这些是我使用的模型: 我目前拥有的是一个DAO(和一个单独的模型)层,它连接所有这些表,并以如上所述的格式返回它们,但对于这个项目,它不允许使用SQL连接(学校项目)。我不认为这会成为一个问题,但现在是了。 我还尝试将三个模型作为列表包装到一个模型中,但我不确定如何保持模型之间的关系,以及如何在中显示它们。(与此处所示相同) 如果有什么不清楚的,请告诉我

  • 主要内容:JasperReports 导出为PDF/HTML/XLS格式 我们在上一章《JasperReports 查看打印报表》中已经看到,如何打印和查看一个 JasperReport 生成的文档。在这里,我们将看到如何将这些报表转换或导出为其他格式,例如 PDF、HTML 和 XLS。Facade 类net.sf.jasperreports.engine.JasperExportManager就是用来实现这个功能的。导出意味着将JasperPrint对象(.jrpr

  • 问题内容: 我有按钮。我想在单击按钮时路由新视图。该按钮如下所示: 单击按钮时,将运行以下方法: 我的控制器动作如下: 当我调试程序时,流程进入了我的控制器动作。但是索引网页不会路由到测试视图页面。没有发生错误。在这种状态下我该怎么办? 问题答案: 如果要刷新页面: 控制器: Index.cshtml: Test.cshtml: ==================================

  • 有时会出现以下错误: 需要对子报告进行哪些必要的更改以最小化相同? 有时,当数据溢出时,它不显示子报表,而是在< code>iReport中显示剩余的数据。 属性设置如下: 子报表属性: 子报表中的文本字段: 请建议一些东西..