反馈已提交

网络繁忙

报表常见问题

  • 文档创建者:zsh331
  • 历史版本:70
  • 最近更新:Carly 于 2024-06-13
  • 1. 概论

    我们在平时的报表运行过程中会遇见各种各样的问题,下面列举了一些常见的报错信息、原因和基本解决方法。

    常见的错误代码报错及解决方案请参考:错误代码汇总及解决方案

    注:JAR 为 2018.4.9 及之后,不再支持 applet 打印,请使用其他打印方法。

    2. 数据连接问题

    2.1 找不到数据连接

    问题描述:预览模板时报错:找不到数据连接

    原因分析:数据连接或者数据集配置问题

    解决方案:查看配置是否有问题,详情参考:通用数据连接常见问题

    2.2 OPTION SQL_SELECT_LIMIT=DEFAULT

    问题描述:具体报错信息:You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1 

    原因分析:JDBC 在连接数据库时候会发送测试语句 SET OPTION SQL_SELECT_LIMIT=DEFAULT 
    这在 MySQL5.6 以下版本是可以的 ,但是 5.6 不再支持 SET.

    解决方案:升级驱动到对应数据库版本即可

    2.3 Cannot load JDBC driver class

    原因分析:驱动问题

    解决方案:查看数据库驱动是否正常. 如果确定驱动是有的, 再看 JDK 与驱动是否匹配

    2.4 Cannot get a connection

    问题描述:具体报错信息:Cannot get a connection,pool error Timeout waiting for idle object

    原因分析:数据库连不上, 连接池满了或者超时之类的. 

    解决方案:点击服务器>定义数据连接,如下图所示,点击连接池属性,弹出连接池属性编辑框,调整最大活动连接数

    2.5 TDS protocol stream is not valid

    问题描述:具体报错信息:connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error:The TDS protocol stream is not valid

    原因分析:jtds 连接 SQL Server时,SQL Server 启用了安全认证

    解决方案:把客户端加到认证列表里

    2.6 paged queries not supported

    原因分析:当前数据库不支持分页查询行式引擎

    解决方案:换个数据库比如 MySQL, SQLServer, Oracle 等等。

    3. 行高列宽及分页问题

    3.1 index xx,size xx

    原因分析:一行的高度大于一页的高度。

    解决方案:可以纵向合并单元格,使一格占多行,这样就可以把行高大于页高的单元格拆分为多行进行计算了,预览就会以多页的方式显示出来。列宽同理,一个单元格的长度不能大于一页的宽度。否则将会出现错误,可以横向合并单元格。

    3.2 repeated column width is larger...

    原因分析:重复列宽度大于纸宽度。

    解决方案:设置小于列宽就行了。

    3.3 由一个单元格扩展出来的行高不一致

    原因分析:某一行内容比较多一行显示不了,就换行了,所以变宽了。

    解决方案:将单元格拉宽点就好了。

    3.4 空白单元格导致使其有多余的空白页

    问题描述:在 H2 单元格填上数据并设置格式后,删除该单元格内容后预览,可看到本来两页的内容变成四页内容,且后两页都是空白页。

    原因分析:因为当时删除单元格时,只删除了该单元格的内容,而没有删除该单元格的格式。若模板中存在多余的格式没有删除,那么对应的列或行栏中的颜色是显示为灰色的。如上图中,D、E 列为深灰色,说明这两列有多余的格式没有删除。

    解决方案:当出现如上问题时,您只要选中 D、E 列所在的单元格后,右键选择「清除>全部」即可。清除全部后,可看到 D、E 的颜色会变为白色,如下图:

    或直接选中 D、E 列,删除这两列也可以,如下图:

    注:若出现多余行后,只要选中深灰色行所在的单元格,点击清除全部或直接删除行即可。

    3.5 模板中有多余的空白sheet

    问题描述:已经确定没有多余行列了,但预览时仍然出现空白页。

    原因分析:可能存在多余的空白sheet,如下图所示:

    解决方案:如上图红框位置,实际使用时可能新建了sheet 没有使用,或删除了 sheet 里的内容,忘记了删除 sheet,那么多余的 sheet 会在预览时,单独作为一个空白 sheet 显示出来,这时只需右击多余的 sheet 删除它即可,如下图:

    3.6 行高列宽超出页面大小设置

    问题描述:在预览模板出现:错误代码:11300002 行高列宽超出页面大小设置,如下图所示:

    原因分析:

    1)某个单元格内容很长,且设置了自动调整行高。

    2)某个单元格内容很长,且设置了自动调整列宽。

    3)重复标题行与列设置有问题也可能会出现上述问题。

    解决方案:请参考行高列宽超出页面大小设置

    4. JAR包版本问题

    4.1 本地预览的效果和服务器上的效果不一样

    原因分析:JAR 包存在差异或者缓存问题

    解决方案:更新 JAR 包,确保开发环境和服务器平台一致正确,仍不行可重启设计器或者清空浏览器缓存。详细可参考:JAR包不匹配常见问题本地预览效果与服务器端预览效果不一致

    4.2 WcardTitleLayout cannot be cast

    问题描述:具体报错信息:WcardTitleLayout cannot be cast to com.fr.form.ui.ElementCaseEditorProvider

    原因分析:更新了 JAR, 没更新自适应插件。

    解决方案:详细可参考:JAR包不匹配常见问题

    4.3 java.lang.AbstractMethodError

    原因分析:一般都是因为引擎的 JAR, 插件的 JAR, 以及设计器的 JAR, 这三者之间不同步, 不是同一个时间编译出来的.

    解决方案:更新所有 JAR。详细可参考:JAR包不匹配常见问题

    4.4 java.lang.NoSuchMethodError

    原因分析:一般都是 JAR 包不匹配

    解决方案:设计器 lib, webapps 里的 lib 以及插件三者要保持一致。

    4.5 java.lang.RuntimeException- Server workspace no response

    原因分析:一般都是 JAR 包不匹配

    解决方案:详细可参考:JAR包不匹配常见问题

    4.6 com.fr.stable.fun.Level

    问题描述:具体报错信息:com.fr.plugin.record.FunctionRecordManager cannot be cast to com.fr.stable.fun.Level

    解决方案:删除 plugins 目录下的老的功能点记录插件. 停止维护了。

    4.7 design_open error

    原因分析:远程设计, 模板打开报错, 打开一些简单的模板试试, 如果简单的可以, 只有部分不行, 考虑是不是两边jar不一致, 插件不一致。详细可参考:JAR包不匹配常见问题

    5. 模板预览显示错位问题

    模板预览显示错位问题较为复杂,可参考:模板预览错位排查方案 进行排查分析。

    6. 内存及并发问题

    6.1 address pool is full 

    问题描述:设计器预览模板时出现报错:address pool is full 

    原因分析:地址池满,连接数超过并发数上限

    解决方案:在「管理系统>智能运维>系统情况」下面,看到当前系统在线用户数,然后再比较注册信息页面里的 Concurrency,

    判断是否超过购买的并发数,从而选择减少并发人数或者增大最大并发数。详细可查询:address pool is full 错误处理

    6.2 java heap space、stack overflow

    问题描述:预览模板时报错:java heap space、stack overflow

    原因分析:模板太复杂,数据量大, 堆栈溢出

    解决方案:优化数据集,报表采用分页预览方式;调大服务器内存。处理方法可参考:修改内存

    6.3 java.lang.OutOfMemoryError

    原因分析:内存溢出了

    解决方案:重启后观察,清理服务器内存。

    6.4 Canot run program xx

    问题描述:具体报错信息:Canot run program xx, error=12, Cannot allocate memory

    解决方案:修改下 JVM 的内存配置, 初始内存调小点,详细方法可参考:FR 性能测试注意事项

    6.5 Web 端访问模板, 出现 "页面排队中"

    原因分析:应该是内存快满了, 防宕机插件启动 Session 排队功能了

    解决方案:清理服务器内存。

    7. 插件问题

    7.1 Cannot connect to site server: xxx

    原因分析:连不上应用商店, 不影响使用。

    7.2 Class not found: JForm

    原因分析:打开报表的时候出错了, 可能是因为用了某个插件而当前设计器没装该插件等等. 具体要看更详细的日志。

    7.3 插件列表读取失败

    原因分析:一般是因为网络原因导致连接不到商城

    解决方案:直接浏览器里访问商城看看能不能访问到: https://market.fanruan.com/

    8. 单元格、参数、控件设置问题

    8.1 下拉复选框返回值问题

    原因分析:下拉复选框控件返回值默认情况下是数组,参数取到的字符串是不带引号的(所以在数据集定义的 SQL 语句中调用字符串类型的参数的话要手动加上单引号才行)。多个值用 in,SQL 的 in 语句参数是字符串数组,每个都要求带单引号。

    解决方案:转化下,把控件的返回值改成字符串,间隔符用','。

    8.2 自定义数据字典显示等号问题

    222

    原因分析:自定义数据字典,跟单元格还有自定义提示框一样,如果不是‘=’号开头是当做字符串处理,‘=’号开头当做公式处理

    解决方案:单写一个等号就是空白的,想要显示等号的话用="="

    8.3 no function found: XXX

    原因分析:没找到自定义函数, 一般都是设计器本地的cpt拷到服务器上, 自定义函数没拷过去.

    8.4 UNEXPECTED WIDGET 

    问题描述:设计器打开模板, 找不到控件

    原因分析:一般是用了自定义控件, 或者某个插件里的控件, 当前运行环境里找不到。

    解决方案:重新设置自定义控件或安装对应的插件。

    8.5 程序数据集界面上设置了参数无法保存

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

    解决方案:删掉程序数据集 class 里的参数, 直接用界面上的. 代码中不去 setParameter, 直接 getParameter 即可.

    8.6 Cannot create JDBC driver of class '' for connect URL ''

    问题描述:在预览模板的时候,后台日志抛错如下图:

    原因分析:在模板中为单元格设置了 数据字典,但是却没有绑定数据表和字段。

    解决方案:重新设置数据字典后保存预览即可。

    8.7 Invalid argument 

    问题描述:具体报错信息:Invalid argument to native writeImage

    原因分析:一般是因为 JDK 不支持部分图片的解码

    解决方案:将模板里图片重新用 qq 截图之类的生成 png 之类试试

    8.8 com.fr.base.TableData$1 

    问题描述:具体报错信息:com.fr.base.TableData$1 cannot be cast to com.fr.data.impl.NameTableData

    解决方案:看堆栈, 上图堆栈就是某个单元格用了公式形态, 但是公式没获取到对应的数据集. 具体哪个单元格, 可以通过二分法确定.

    8.9 单元格计算死循环

    问题描述:在预览一个模板时,出现如下图所示错误代码:11300003 单元格计算死循环

    原因分析:在预览报错提示页面有关于具体情况的说明,分别如下:

    1)如果出错对象只有一个单元格,比如 A1,则说明 A1 所引用的单元格出现了死循环。

    2)如果出错对象是两个单元格,比如 [B1, A1],则说明 A1 和 B1 的左父格或者上父格设置出现了死循环。

    3)如果出错对象是一个单元格,但用中括号标记出来了,比如 [A1] ,则说明 A1 的左父格或者上父格引用了自身。

    解决方案:请参考单元格计算死循环

    8.10 修改了参数,预览时模板没有变化

    问题描述:修改了报表模板中的参数名字,预览模板,输入参数值后发现没有效果。

    原因分析:可能是修改了参数名后,对应的控件名没有改变,因此在参数界面中输入值后没有传给相应的参数。

    解决方案:将参数控件名设置与参数名相同。

    8.11 冻结标题时首行上边框粗

    问题描述:当报表设置了重复冻结时报表预览效果如下,首行数据行与标题行之间的边框线很粗:

    解决方案:请参考 冻结标题时首行上边框粗解决方案

    8.12 单元格添加树节点,字体样式设置失效

    问题描述:设计器中字体设置的是白色, 添加了树节点按钮后预览, 字体就变成了黑色,如下图所示:

    解决方案:

    1)在模板Web属性中添加加载结束时间,输入JS代码:$(".x-text").css("color","red")

    2)并选择对应的控件,添加点击事件,输入JS 代码:$(".x-text").css("color","red")

    3)保持报表预览即可。

    注:需要根据实际情况修改JS代码。

    9. 服务器或文件问题

    9.1 java.lang.NoClassDefFoundError 

    9.1.1 具体报错:sun.awt.X11GraphicsEnvironment  Could not initialize class sun.awt.X11.XToolkit

    原因:  一般发生在 Linux 下, 处理图片时需要本地的 jvm x-server 的支持.

    解决方案:启动 Java 时加上参数:-Djava.awt.headless=true 例如:我们在启动 Tomcat 时在启动命令行里面加上这个参数就可以了.

    对于 WebLogic 可以设置在/export/home/xxx(用户名)/weblogic/wlserver_10.3/common/bin/commEvn.sh

    Sun)
        JAVA_VM=-client
        MEM_ARGS="-Xms1024m -Xmx1024m -XX:MaxPermSize=1024m"
        JAVA_OPTIONS="${JAVA_OPTIONS} -Xverify:none"
      ;;
      *)
        JAVA_VM=
        MEM_ARGS="-Xms1024m -Xmx1024m"
      ;;
      esac
    fi
    export JAVA_VM MEM_ARGS JAVA_OPTIONS

    之后添加下面两句:

    JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.awt.headless=true "
    export JAVA_OPTIONS

    对于 WebSphere 则进入应用程序服务器 > server1 > 进程定义 > Java 虚拟机」。

    一般 JVM 自变量 :-Dfile.encoding=GBK -Ddefault.client.encoding=GBK -Djava.awt.headless=true

    9.1.2 具体报错:com/fr/general/logRecordTime

    解决方案:JAR 包一致的前提下, 删掉所有的插件, 先确定 Tomcat 下独立部署有没有问题, 如果没问题, 再看看是不是要改 WebLogic的 JRE.

    9.1.3 具体报错:com/fr/web/core/service/WidgetService

    原因分析:放错了 Applet 包导致的, 比如把 Applet 放到里 lib 目录等等.

    解决方案:将 Applet 放到%FR_HOME%\webapps\webroot目录下

    9.1.4 具体报错:sun/io/UnknownCharacterException

    原因分析:可能是驱动异常导致的。

    解决方案:检查替换驱动。

    9.2 java.net.SocketException

    9.2.1 具体报错信息:Connection reset by peer 或者 Broken pipe

    资源文件读取失败, 原因有很多, 需要更细致的排查

    可能原因:

    1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接 Down 掉;

    2)客户关掉了浏览器,而服务器还在给客户端发送数据;

     3)浏览器端按了 Stop

    解决方案:

    1)减少并发,如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。

     2)针对第二种和第三种情况一般不会影响服务器。

    但是如果对异常信息没有特别处理,有可能在服务器的日志文件中,重复出现该异常,造成服务器日志文件过大,影响服务器的运行。

    可以对引起异常的部分,使用 try...catch 捕获该异常,然后不输出或者只输出一句提示信息,避免使用 e.printStackTrace(); 输出全部异常信息。

    9.2.2 具体报错信息:ClientAbortException:java.net.SocketException

    原因分析:处理 http 连接时,正在输出内容时,用户关闭了 IE,会出现一个"ClientAbortException",属于 I/O 处理中出现的一个异常

    注:不一定是用户主动触发的, 网络不稳定时也有可能出现.

    9.3 java.lang.SecurityException

    问题描述:具体报错信息:class "xx"'s signer information does not match signer information of other classes

    原因分析:class 被重复加载了, 最常见的就是 webapps/webroot/WEB-INF/lib 里多放了一个 Applet 包.

    解决方案:删除即可

    9.4 ParseError at [row,col]:[x,xx]

    问题描述:具体报错信息:com.fr.third.javax.xml.stream.XMLStreamException : ParseError at [row,col]:[x,xx]

    原因分析:xml 文件内容有损坏, 具体哪一行那一列, 看[row, col]提示.

    解决方案:看报错里是哪个 manager 导致的, 一般

    DatasourceManager -> datasource.xml

    FunctionManager -> functions.xml

    ConfigManager -> config.xml

    CustomConfigManager -> customconfig.xml

    WidgetManager -> widgets.xml

    9.5 Can't create cache file

    原因分析:Tomcat 下没有 temp 目录, 或者是 temp 目录写入权限不够

    解决方案:在 Tomcat 的安装目录下创建这个目录就好了

    9.6 Get PublicKey method failed

    原因分析:具体报错信息:Get PublicKey method failed,status is : -1

    解决方案:连不上数字签名服务器了, 检查网络是否可以ping通以及数字签名所在服务器是否正常, 看不出来问题就重启下.

    9.7 Could not initialize class

    问题描述:具体报错信息:Could not initialize class Sense4.Sense64

    原因分析:fs 里开启了加密狗注册, 但是没有安装对应的驱动.

    9.8 com.fr.test.xxx not found

    问题描述:具体报错信息:启动 Tomcat 有一些 function: com.fr.test.xxx not found!

    原因分析:为了提升自定义函数计算速度, 将自定义函数放在启动的时候去加载;如果自定义函数找不到就会有这个报错, 一般不影响, 因为有一些是我们内置的 demo.

    9.9 java.io.FileNotFoundException

    问题描述:具体报错信息:java.io.FileNotFoundException: xxx.cpt or xml (拒绝访问)

    原因分析:文件不存在, 或者web浏览器没有文件夹的访问权限。

    9.10 war 包部署, 修改 xml 再次部署后未生效

    原因分析:WebLogic 下, war 包部署是不解压的, 所以我们会把所有的 xml 拷贝到临时目录进行增删改.

    解决方案:可以通过访问 op=fr_base&cmd=evaluate_formula&expression=jvm() 查看缓存路径, 删掉缓存路径的 FineReport8.0 文件夹再部署.

    9.11 java.net.BindException

    问题描述:具体报错信息:java.net.BindException:Address already in use: JVM_Bind

    原因分析:一般都是上一次 Tomcat 没有彻底关掉就再次启动导致端口被占用了.

    9.12 当前hsql已被另一线程锁定

    原因分析:两个 Web 服务器共用了同一个 WebReport. 最常见的, 启动了 Tomcat, 设计器也用本地目录切了过去.

    或者 Tomcat 里用了 docBase 映射, 映射的地址是tomca/webapps中的 WebReport, 这样会被加载两次.

    解决方案:删掉 db.lck,重启 Tomcat 服务,修改配置可以解决

    9.13 Web 端 654 和 655错误

    原因分析:加载了有问题的 class 文件做出的程序数据集

    解决方案:程序数据集 class 必须放在%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\data下,编译好了后的 class 名也不能修改。

    9.14 Can't create cache file错误

    原因分析:Tomcat 下没有 temp 目录, 或者是 temp 目录写入权限不够

    解决方案:Linux 下创建 temp 目录,赋权限 777;Windows 下可以把工程从 C 盘移到 D 盘

    9.15 预览 Multiple exceptions, web 端卡住

    原因分析:一般是因为设计器默认8075端口被占用了

    解决方案:点击文件>选项>高级,换一个设计器端口, 重启.

    10. 其他问题

    10.1 final block not properly padded

    原因分析:DES 加密的类初始化有问题, 不过只在 OpenJDK 里遇到过.

    解决方案:换成正常 Linux 下的 JDK 就好了.

    10.2 javax.mail.SendFailedException

    问题描述:Invalid Addresses  javax.mail.AuthenticationFailedException

    原因分析:邮件收件人, 邮箱账号密码错误或者邮箱服务器有问题,被邮箱服务器拒绝了连接, 可能判定为发送垃圾邮件等行为

    解决方案:重新输入收件人及密码等或者换个邮箱

    10.3 报表背景在不同电脑上显示颜色不一样

    问题描述:

    服务器本身正常显示状态:

    部分客户机非正常显示状态:

    原因分析:电脑在显示上有比较大的失真,报表背景色 RGB(248, 247, 230),三种颜色都参与了颜色的生成,且数值都不大,因此在某些显示效果比较差的电脑上,就会导致比较大的失真,甚至会出现一个显示淡蓝色,一个显示粉红色的情况,检查发现报表传递的颜色参数是正常的,所以只是单纯的显示问题。

    解决方案:在使用 RGB 参数来调整背景色时,最好设置其中一到两个参数为 255,例如,R 参数为 255,G 参数为 255,B 参数为 212,RGB(255,255,212) 这样失真的可能性会小一些,颜色误差不是很大,基本相同。

    附件列表


    主题: 报表应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭



    AI

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