历史版本2 :程序数据源常见问题 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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. 程序数据集超时后反复调用编辑

原因分析

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

解决方案

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