反馈已提交

网络繁忙

程序数据源常见问题

  • 文档创建者:Catqiu
  • 历史版本:3
  • 最近更新:Carly 于 2024-01-02
  • 1. 概述

    本文主要提供了程序数据源在使用中遇到的问题以及解决方案。

    2. 程序数据集加载慢或者卡死

    原因分析

    没有做初始化只执行一次的判断

    解决方案

    因为 getValueAt() 方法里面调用了 init() 方法导致执行次数太多后台卡住预览不了数据,正确修改如下:

    public void init() {  
            // 确保只被执行一次  
            if (valueList != null) {  
               return;  
         }

    3. 程序数据集获取不到参数

    原因分析

    获取参数的接口位置写错,未放到 int 初始化中

    解决方案

    一般包含从数据源读取数据,及后续的处理–从各种类型转换成二维数组,在 getRowCount() 和 getValueAt() 方法中被调用以获取行数和值。例如:

    public void init() {  
            // 确保只被执行一次  
            if (valueList != null) {  
               return;  
    // 获取参数
       String parameter0 = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString();
         }

    4. 设计器使用程序数据集报错缺少tools

    原因分析

    程序运行时用到 tools 包,程序运行找不到此包

    解决方案

    在 FineReport_11.0\lib 和 FineReport_11.0\webapps\webroot\WEB-INF\lib 底下都放入 tools 包。

    5. 程序数据集预览数据中文乱码或者过滤无数据

    原因分析:

    数据库编码与设计器编码不一致导致(优先保证代码单独执行可以正常取数)

    解决方案:

    方案一:修改设计器的编码,修改设计器启动参数,在 %FR_HOME%bin\designer.vmoptions 文件中添加参数:-Dfile.encoding=UTF-8

    方案二:修改数据连接的编码

    6. 报错:java.lang.NoClassDefFoundError

    问题描述:

    程序数据集远程设计时,设置参数保存后不显示或取不出数据。

    原因分析:

    明显的缺少jar依赖包: httpclient

    解决方案:

    参考 Eclipse中启动设计器 导入所有的 jar 包。

    7. 报错:Could not initialize class com.fr.web.Oldweblet

    问题描述:

    启动工程,catalina.out打印出报错Could not initialize class com.fr.web.Oldweblet,模板显示空白。


    原因分析

    版本升级或者版本不一致导致无法初始化类。

    解决方案

    对于不同版本的FR接口是有所变化的,修改对应代码重新编译即可。

    8. 报错:Illegal character in path at index

    问题描述

    参数刷新不出来或者报错 java.lang.IllegalArgumentException:Illegal character in path at index

    原因分析

    1)因为程序数据集class里自己定义了参数, 跟界面冲突, 出于兼容原因, 优先选择使用class里设置的:。

    2)远程设计情况下本地没有对应程序数据集。

    解决方案

    1)删掉程序数据集class里的参数, 直接用界面上的. 代码中不去setParameter, 直接getParameter即可. (程序数据集界面参数需要手动添加,无法自动识别)

    2)本地和服务器上都要放class文件。

    9. 获取不到程序数据集里传入的参数

    问题描述

    Object[] paramArray = parameters.get().toArray();通过这种方式获取参数,是个空数组,结果获取不到程序数据集里传入的参数

    原因分析

    程序数据集获取不到参数,编写错误。

    解决方案

    把获取参数的接口写到int初始化中。

    10. 程序数据集超时后反复调用

    原因分析

    程序数据源超时或者数据为空的时候,会控制台反复调用,导致数据库崩掉。

    解决方案

    定义静态变量并对每个方法做判断初始化

    11. 报错:java.lang.reflect.UndeclaredThrowableException

    问题描述

    设计器端一般报错为:java.lang.reflect.UndeclaredThrowableException

    设计器fanruan.log日志里面报错:Caused by: java.io.NotSerializableException

    原因分析

    程序数据集类的属性存在不可序列化的属性

    解决方案

    一般是直接把不可序列化的属性去掉,在取数方法里面生成,或者加 transient修饰,被 transient 修饰的属性代表不参与序列化,或者将属性替换成可序列化的属性。

    12. 报错:java.lang.ArrayIndexOutOfBoundsException

    问题描述:

    程序数据集预览报错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

    原因分析:

    程序数据集取数时手动添加的参数,

    如果多于代码里面使用的参数则正常

    如果少于代码里面使用的参数则会报错数组越界

    解决方案:

    程序数据集创建的参数数量应跟代码里定义的参数一致

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持