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

在Jasper服务器上部署带有Scriplet的Jasper报表无法工作

韦星文
2023-03-14

我是Jasper报告新手,我有一个报告,它只有一个简单脚本,只返回一个字符串。在使用Jasper studio 6.5.0预览时,我能够看到结果,但当我尝试在本地Jasper服务器上部署相同的报表时,它会抛出错误:

Caused by: java.lang.ClassCastException: <class> cannot be cast to net.sf.jasperreports.engine.JRAbstractScriptlet
    at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:109)
    ... 178 more]]

我正在Glassfish 4.1.1上运行服务器,在lib文件夹中包含了scriplet jar文件,并根据https://community.jaspersoft.com/wiki/classcast-exception-when-running-report-containing-scriptlet更改了scriplet中的导入

下面是我的测试代码:

import net.sf.jasperreports.engine.*;

public class DemoScriplet extends JRDefaultScriptlet{

public String getHello() throws JRScriptletException{
    return "This is from a scriplet!";
}

以前还有其他人遇到过这个错误吗?

共有1个答案

谢奇略
2023-03-14

我找到了解决这个问题的办法。我没有将scriplet添加到库中,而是将其作为报表资源添加。还有,我找到了一个视频作为参考。

https://www.youtube.com/watch?v=t9hv6drwrhq

希望这对某人有帮助。

 类似资料:
  • 我使用jasper设计器(不是iReport而是eclipse的插件)创建了一个使用excel文件作为数据源的报表。 该报表在设计器中运行良好,并且从文件中读取数据没有问题,但是在将该文件编译为并在JasperViewer中给出excel文件的路径后,jasperViewer中没有任何内容! 这是我的代码:

  • 我对从web服务调用jasper报告有问题。 我使用这个URL http://host:port/jasperserver[-pro]/rest_v2/reportexecutions获取请求id,输出类似于下面的XML。 现在我正尝试通过以下url运行jasper报表 http://localhost:8080/jasperserver/rest_v2/reportexecutions/7818

  • 我是JasperSoft的新手,当我上传jrxml并尝试在运行Apache Tomcat8的web应用程序上执行它时,我发现在将报表导出到多选项卡(多表)excel文件中存在一些问题。我使用iReport 4.6.0 CE构建此报表,其中使用包含在两个标头组中的两个子报表,并用分页符分隔,以确定excel文件的第一个选项卡的结束和第二个选项卡的开始。当我使用iReport运行此报表时,我首先得到了

  • 以下是我的设想: 我尝试将一个报告从studio发布到服务器,当我打开服务器web应用程序上的报告时,报告显示为空白,并显示一条消息说‘报告为空。’。 在搜索了一下之后,我发现我的报表需要发布到带有数据源的服务器上,以便在服务器web应用程序上查看。

  • 下面是我所做的步骤(简化名称) 在Studio项目中 > 创建一个名为Person的Java Bean,包含字段和getter/setter 在Bean Name and Bean method页面,选择import from Jaspersoft Studio并选择testBean,单击finish 在Studio项目中 > 验证Jaspersoft Studio中的数据预览是否正常后,在Jas

  • Jasper报表在从数据库中获取值时是如何工作的。我知道每一行都会重复这个细节带,但我的问题是: 为什么我问这些问题是,我想做一些操作通过所有行的基础上,有一个元素在我的细节带,应该打印或不在每个带。 示例:假设我的DB总是返回两行,一行用于public和一行用于private,并且我必须比较其中的一列,将name写成overall_score,如下所示: 我在detail band上有一个lin