帆软报表之 常见问题及解决方案
常见问题及解决方案
1. 概论
注:jar为2018.4.9及之后,不再支持applet打印,请使用其他打印方法。
2. 常见报错代码
2.1 代码及含义
错误代码
|
解决方案说明
|
错误代码:1101 行式引擎不支持多数据源展示
|
行式引擎只支持单个数据集。若数据来自不同的地方,可以在定义数据集时自行将需要的数据整合到一个数据集中使用。
|
错误代码:1102 行式引擎不支持条件属性修改行高列宽
|
使用行式引擎时,不要使用条件属性修改行高列宽。
|
错误代码:1103 行式引擎不支持形态
|
使用行式引擎时,不要使用形态功能。
|
错误代码:1104 行式引擎只支持从上到下扩展属性,其它扩展属性设置均不支持
|
行式引擎不支持无扩展和从左到右扩展属性,可以修改报表,使报表中只有从上到下的扩展属性,也可以取消使用行式引擎功能。
|
错误代码:1105 行式引擎不支持悬浮元素
|
使用行式引擎时,不要使用悬浮元素。
|
错误代码:1106 行式引擎不支持层次坐标
|
使用行式引擎时,不要使用层次坐标进行动态隔间计算功能。
|
错误代码:1107 行式引擎不支持分栏
|
使用行式引擎时,不要使用报表分栏功能。
|
错误代码:1108 行式引擎不支持Sheet间运算
|
使用行式引擎时,不要使用多sheet间数据计算公式。
|
错误代码:1109 行式引擎不支持子报表
|
使用行式引擎时,不要使用单元格元素中的子报表功能。
|
错误代码:1110 导出Excel不支持该公式:公式xxx
|
在“公式定义”面板中将“导出/编辑结果时,保留公式”选项取消勾选。
|
错误代码:1111 导出Excel不支持Html中部分标签
|
不支持的标签内容将以纯文本显示。
|
错误代码:1112 导出Excel单元格背景只支持纯色
|
由于Excel本身不支持单元格背景,所以请将单元格背景改成纯色。
|
错误代码:1113 导出Word页眉页脚的内容为图片和文字组合时,文字不可编辑
|
若需要导出word后的文字可编辑,需要定义页眉时只用纯文本
|
错误代码:1114 导出Word不支持多Sheet下的不同页面设置
|
导出的word页面将全部以第一个sheet的页面设置的页面。避免的方案就是多个sheet设置相同的页面设置。
|
错误代码:1115 系统并发数已满
|
请稍后访问,或者联系商务申请并发数更多的license。
|
错误代码:1116 您使用了未注册的功能——xxxxx
|
请联系商务购买此功能。
|
错误代码:1118 Flash打印不支持将页面设置传递给打印机
|
请改用PDF打印或者Applet打印。
|
错误代码:1121 PDF打印只支持IE内核浏览器,其他浏览器将导出PDF文件
|
请改用Flash打印或者Applet打印。
|
错误代码:1119 未找到当前浏览器语言对应的国际化文件,将以中文作为默认语言
|
请添加当前浏览器语言对应的国际化文件
|
错误代码:1117 压缩部署不支持远程设计
|
在压缩部署前将需要添加或修改的模板文件编辑好
|
错误代码:1120 当前Hsql数据库已被另一线程锁定
|
请检查当前web应用是否被多个服务器同时使用.
|
错误代码:1201 当前浏览器未安装打印所需插件
|
请按照下面列表中不同打印类型安装对应的插件
|
错误代码:1202 当前工程目录下未发现Applet包
|
请将Applet包放至到当前工程目录下
|
错误代码:1203 错误的公式参数 + 公式名
|
请将公式参数输入正确
|
错误代码:1204 邮件配置参数不正确
|
请在管理平台中将邮件配置参数配置准确。
|
错误代码:1205 加密狗读取失败
|
请检查加密锁有没有插好,加密锁驱动有没有正常加载
|
错误代码:1206 当前配置目录下未发现注册文件
|
请检查当前工程目录WEB-INF\resources文件夹下有没有FanRuan.lic文件,若没有请放置。具体步骤请参考http://www.finereporthelp.com/help/9/11.html
|
错误代码:1207 导入Excel2007需要在lib目录下放置poi包
|
请在当前工程目录的lib目录下放至poi包
|
错误代码:1301 数据集配置错误
|
请检查模板中数据连接配置能否连接成功
|
错误代码:1302 行高列宽超出页面大小设置:行/列 号
|
请检查单元格XX行高和列宽是否超出了页面设置的大小。并调整单元格行高列宽大小或者调整单元格的其他属性来配置单元格的行高列宽。
|
错误代码:1303 单元格计算死循环 + 单元格行列
|
XX单元格的父格有没有设置错误,或者是否错误计算导致计算死循环。
|
错误代码:1304 找不到模板文件 + 模板名
|
请确认当前工程目录的reportlets路径下有无该模板,或者该模版的路径是否输入正确。
|
错误代码:1305 模板文件解析出错
|
请确认模板文件是否已损坏, 如已损坏, 则需要重新制作
|
错误代码:1306 文件解析出错
|
请确认上传的文件是否已损坏或者是不支持的文件类型。请使用合格的文件。
|
2.2 列举部分解决方案
(1)错误代码:1301
报错:数据集配置错误Query:Cannot create PoolableConnectionFactory ([Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序)
原因:驱动的关系,在64位系统,64位的tomcat下,不论是32位的jdk或者是64位的jdk,都不支持ODBC数据源,所以访问有access数据库的模板时会报错。
一般是JDK是64位的,而且服务上没有64位的ODBC数据库驱动导致的。
解决方案:
方法一:安装下面两个驱动,任意一个就行。AccessDatabaseEngine_2007_X64.exe或AccessDatabaseEngine2010_X64.exe
方法二:改用32位的JDK。
(2)错误代码:1303
报错:Death cycle exists at calculating XX
原因: 单元格或者控件计算中, 存在死循环.
解决方案:分析检查下报错信息中相关的单元格,看其左、上父格的设置是否存在矛盾的地方。
(3)错误代码:1305
报错:模板文件解析出错file:xxx.cpt
原因:直接用editplus等软件, 查看cpt里xml内容,检查模板是否已损坏; 如果是FREncrypt开头的, 那可能模板是加密的;
如果里面是空白的, 那么就是模板损坏了, 可能是保存的过程中服务器挂了或者被重启了, 客户端远程网络中断了等等
3. 常见问题及解决方案
3.1 address pool is full
原因:地址池满,连接数超过并发数上限
解决方案:在管理系统>智能运维->系统情况下面,看到当前系统在线用户数,然后再比较注册信息页面里的Concurrency,
判断是否超过购买的并发数,从而选择减少并发人数或者增大最大并发数
3.2 session time out
详细请参考报session time out错误
3.3 java heap space、stack overflow
原因:模板太复杂,数据量大, 堆栈溢出
解决方案:优化数据集,报表采用分页预览方式;调大服务器内存。
处理方法可参考Java heap space报错、报表性能优化。
3.4 下拉复选框返回值问题
原因:下拉复选框控件返回值默认情况下是数组,参数取到的字符串是不带引号的(所以在数据集定义的sql语句中调用字符串类型的参数的话要手动加上单引号才行)。多个值用in,sql的in语句参数是字符串数组,每个都要求带单引号。
解决方案:转化下,把控件的返回值改成字符串,间隔符用','。
3.5 本地预览的效果和服务器上的效果不一样
原因:JAR包存在差异或者缓存问题
解决方案:更新JAR包,确保开发环境和服务器平台一致正确,仍不行可重启设计器或者清空浏览器缓存。
3.6 图表中中文乱码,出现方框等
原因:方框是缺少中文字体的缘故。
解决方案:对应计算机系统,下载更新对应的中文字体库。
3.7 repeated column width is larger...
原因:重复列宽度大于纸宽度。
解决方案:设置小于列宽就行了。
3.8 由一个单元格扩展出来的行高不一致
原因:某一行内容比较多一行显示不了,就换行了,所以变宽了。
解决方案:将单元格拉宽点就好了。
3.9 自定义数据字典显示等号问题
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105150431827-807577860.jpg)
原因:自定义数据字典,跟单元格还有自定义提示框一样,如果不是‘=’号开头是当做字符串处理,‘=’号开头当做公式处理
解决方案:单写一个等号就是空白的,想要显示等号的话用="="
3.10 找不到数据连接
原因:数据连接或者数据集配置问题
解决方案:查看配置是否有问题,详情参考:预览模板数据集配置错误
3.11 an internal error occurred
原因:安装exe时会出现的报错,一般是因为下载下来的安装文件有损坏, 不完整.
解决方案:在官网用浏览器下载的官方exe.
3.12 index xx,size xx
原因:一行的高度大于一页的高度。
解决方案:可以纵向合并单元格,使一格占多行,这样就可以把行高大于页高的单元格拆分为多行进行计算了,预览就会以多页的方式显示出来。 列宽同理,一个单元格的长度不能大于一页的宽度。否则将会出现错误,可以横向合并单元格。
3.13 TTf is not a valid TTF or OTF file
原因: pdf导出会扫描本地的字体文件, 如果字体损坏, 就会有上述报错.
解决方案: 提示哪个字体损坏, 就拷贝一份过去.
3.14 UnsupportedClassVersionError
原因: 一般是由于技术支持给客户定制修改过jar包里的class导致的
解决方案:需要将IDE的工程编译等级调整到1.6.
3.15 java.lang.AbstractMethodError
原因: 一般都是因为引擎的jar, 插件的jar, 以及设计器的jar, 这三者之间不同步, 不是同一个时间编译出来的.
解决方案: 更新所有jar.
3.16 java.lang.NoClassDefFoundError
(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
(2)具体报错:com/fr/general/logRecordTime
jar包一致的前提下, 删掉所有的插件, 先确定tomcat下独立部署有没有问题,
如果没问题, 再看看是不是要改WebLogic的jre.
(3)具体报错:com/fr/web/core/service/WidgetService
原因:放错了applet包导致的, 比如把applet放到里lib目录等等.
解决方案:将applet放到%FR_HOME%\WebReport目录下
(4)具体报错:sun/io/UnknownCharacterException
原因:这个类是jdk1.7导致的
解决方案:用1.7的jdk可以解决报错.
3.17 final block not properly padded
原因: DES加密的类初始化有问题, 不过只在openjdk里遇到过.
解决方案:换成正常linux下的jdk就好了.
3.18 javax.mail.SendFailedException
报错:Invalid Addresses javax.mail.AuthenticationFailedException
原因:邮件收件人, 邮箱账号密码错误或者邮箱服务器有问题,被邮箱服务器拒绝了连接, 可能判定为发送垃圾邮件等行为
解决方案:重新输入收件人及密码等或者换个邮箱.
3.19 java.lang.SecurityException
具体报错信息:class "xx"'s signer information does not match signer information of other classes
原因:class被重复加载了, 最常见的就是WebReport/webinf/lib里多放了一个applet包.
解决方案:删除即可
3.20 java.lang.NoSuchMethodError
原因:一般都是jar包不匹配
解决方案:设计器lib, WebReport里的lib以及插件三者要保持一致.
3.21 Invalid argument
具体报错信息:Invalid argument to native writeImage
原因:一般是因为jdk不支持部分图片的解码
解决方案:将模板里图片重新用qq截图之类的生成png之类试试.
3.22 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连接SqlServer时,SqlServer启用了安全认证
解决方案:把客户端加到认证列表里.
3.23 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
3.24 Not found resource
具体报错信息:com/fr/web/core/hack/PIE.htc
或者Not found resource: /com/fr/fs/resources/fonts/iconfont.eot?
原因:这两个都是ie低版本下不支持某些样式或者css的写法导致的, 并不影响使用.可能会损失写透明阴影之类的特效.
解决方案:使用高版本的IE
3.25 java.net.SocketException
(1)具体报错信息:Connection reset by peer 或者 Broken pipe
资源文件读取失败, 原因有很多, 需要更细致的排查
可能原因:①服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②客户关掉了浏览器,而服务器还在给客户端发送数据;
③浏览器端按了Stop
解决方案:①减少并发,如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。
②、③这两种情况一般不会影响服务器。
但是如果对异常信息没有特别处理,有可能在服务器的日志文件中,重复出现该异常,造成服务器日志文件过大,影响服务器的运行。
可以对引起异常的部分,使用try...catch捕获该异常,然后不输出或者只输出一句提示信息,避免使用e.printStackTrace();输出全部异常信息。
(2)具体报错信息:ClientAbortException:java.net.SocketException
原因:处理http连接时,正在输出内容时,用户关闭了IE,会出现一个"ClientAbortException",属于I/O处理中出现的一个异常
注:不一定是用户主动触发的, 网络不稳定时也有可能出现.
3.26 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.
解决方案:升级驱动到对应数据库版本即可
3.27 Error Happens On Picture Analysis
原因:Excel导入的时候部分图片可能会解析失败, 或者获取的宽高有问题.
注:如果页面上需要的内容没问题, 那么可以无视这个报错
3.28 Can't create cache file
原因:tomcat下没有temp目录, 或者是temp目录写入权限不够
解决方案:在tomcat的安装目录下创建这个目录就好了
3.29 Excel format pattern not supported
具体报错信息:Excel format pattern not supported by java
原因:一般是因为Excel里用了什么自定义的数字样式, 导入报表中的时候用java解析发现不支持
3.30 Cannot load JDBC driver class
原因:驱动问题
解决方案:查看数据库驱动是否正常. 如果确定驱动是有的, 再看jdk与驱动是否匹配
3.31 设计器支离破碎, 显示不全
原因:可能是jdk1.8的bug,
解决方案:安装内置jdk1.7的设计器windows_FineReport-CN_jdk1_7.exe。
3.32 paged queries not supported
原因:当前数据库不支持分页查询行式引擎
解决方案:换个数据库比如MySQL, SQLServer, Oracle等等.
3.33 Cannot connect to site server: xxx
原因:连不上应用商店, 不影响使用.
3.34 no function found: XXX
原因:没找到自定义函数, 一般都是设计器本地的cpt拷到服务器上, 自定义函数没拷过去.
3.35 Cannot get a connection
具体报错信息:Cannot get a connection,pool error Timeout waiting for idle object
原因:数据库连不上, 连接池满了或者超时之类的.
解决方案:点击服务器>定义数据连接,如下图所示,点击连接池属性,弹出连接池属性编辑框,调整最大活动连接数
3.36 com.fr.stable.fun.Level
具体报错信息:com.fr.plugin.record.FunctionRecordManager cannot be cast to com.fr.stable.fun.Level
解决方案:删除plugins目录下的老的功能点记录插件. 停止维护了.
3.37 Class not found: JForm
原因:打开报表的时候出错了, 可能是因为用了某个插件而当前设计器没装该插件等等. 具体要看更详细的日志
3.38 泰语 韩语等小语种乱码
解决方案:修改fs里的编码设置为UTF-8
3.39 Get PublicKey method failed
具体报错信息:Get PublicKey method failed,status is : -1
解决方案:连不上数字签名服务器了, 检查网络是否可以ping通以及数字签名所在服务器是否正常, 看不出来问题就重启下.
3.40 java.lang.OutOfMemoryError
原因:内存溢出了
解决方案:重启后观察. 如果频繁内存溢出建议安装防宕机插件
3.41 预览Multiple exceptions, web端卡住
原因:一般是因为设计器默认8075端口被占用了
解决方案:点击文件>选项>高级,换一个设计器端口, 重启.
3.42 Could not initialize class
具体报错信息:Could not initialize class Sense4.Sense64
原因:fs里开启了加密狗注册, 但是没有安装对应的驱动.
2.43 web端出现404报错
具体报错信息:web端出现404 - /WebReport/[object%20Object]
解决方案:update: 2016-11-17之后的jar已修复该bug.
3.44 com.fr.test.xxx not found
具体报错信息:启动tomcat有一些function: com.fr.test.xxx not found!
原因:性能组那边为了提升自定义函数计算速度, 将自定义函数放在启动的时候去加载;
如果自定义函数找不到就会有这个报错, 一般不影响, 因为有一些是我们内置的demo.
3.45 UNEXPECTED WIDGET
报错:设计器打开模板, 找不到控件
原因:一般是用了自定义控件, 或者某个插件里的控件, 当前运行环境里找不到.
3.46 设计器直接起不来
解决方案:先用任务管理器查看进程, 是不是有designer.exe, 有就关掉再启动试试.
如果还是不行, 打开bin目录的designer.bat, 在最后一行添加pause, 保存后启动designer.bat, 查看报错.
3.47 design_open error
原因:远程设计, 模板打开报错, 打开一些简单的模板试试, 如果简单的可以, 只有部分不行, 考虑是不是两边jar不一致, 插件不一致.
3.48 插件列表读取失败
原因:一般是因为网络原因导致连接不到商城
解决方案:直接浏览器里访问商城看看能不能访问到. https://market.fanruan.com/
3.49 设计器界面错乱, 菜单显示成英文
原因:可能是上一次打开的模板里面用了当前环境里不存在的插件元素
解决方案:Ctrl + N新建一张模板后, 退出设计器.再次启动.
3.50 tomcat上logo或者背景图片消失
原因:同一个电脑上开了tomcat和设计器, 两个工程用的同一个缓存目录, 关闭设计器后会删掉缓存目录, 导致tomcat里图片消失.
解决方案:各自配cache.xml来指定不同的缓存目录.具体方法可参考:修改缓存路径
3.51 程序数据集界面上设置了参数无法保存
原因:程序数据集class里自己定义了参数, 会跟界面冲突, 出于兼容原因, 优先选择使用class里设置的.
解决方案:删掉程序数据集class里的参数, 直接用界面上的. 代码中不去setParameter, 直接getParameter即可.
3.52 打印或者导出,内容在页尾截断了
原因:web端预览的时候, 浏览器可以自动撑开div, 而打印导出的时候, 是严格收到页面大小限制的, 所以会截断.
解决方案:把截断的单元格设置成分页可以断开.
3.53 com.fr.base.TableData$1
具体报错信息:com.fr.base.TableData$1 cannot be cast to com.fr.data.impl.NameTableData
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105150431566-420689116.jpg)
解决方案:看堆栈, 上图堆栈就是某个单元格用了公式形态, 但是公式没获取到对应的数据集. 具体哪个单元格, 可以通过二分法确定.
3.54 java.io.FileNotFoundException
具体报错信息:java.io.FileNotFoundException: xxx.cpt or xml (拒绝访问。)
原因:文件不存在, 或者web浏览器没有文件夹的访问权限.
3.55 远程设计连接服务器总是断开连接
先排查下两边jar是否一致, 如果一致, 看看有没有条件在服务器上装一个设计器, 直接localhost看看会不会失败.
如果localhost是好的, 通过ip不行, 可能是网络问题. 在连接失败的时候, ping服务器ip看看网络响应延迟.
3.56 WcardTitleLayout cannot be cast
具体报错信息:WcardTitleLayout cannot be cast to com.fr.form.ui.ElementCaseEditorProvider
原因:更新了jar, 没更新自适应插件.
3.57 Web端访问cpt, 提示找不到模板
原因:是不是所有的cpt都找不到, 还是说只有部分新增的找不到? 如果是新增的找不到, 是不是集群没有同步到其他节点.
所有的cpt都找不到, 去fs > 智能运维->系统情况 > 系统状态 > 配置文件检测 查看xml文件都放在哪的. 从该路径查找reportlets目录.
3.58 Applet打印没反应
原因及解决方案:确认下客户浏览器信息, 目前chrome下不支持applet打印, 只支持flash, pdf以及本地打印.
ie下建议安装32位jre, 并且在控制面板 - Java设置 - 安全, 把http://localhost:8075加入进去.
3.59 Canot run program xx
具体报错信息:Canot run program xx, error=12, Cannot allocate memory
解决方案:修改下jvm的内存配置, 初始内存调小点,详细方法可参考FR性能测试注意事项
3.60 7.0设计器打不开8.0的模板
解决方案:用editplus之类的软件打开XXX.cpt, 找到倒数第二行 ,将其删除.
注:如果模板里用了新版本的一些属性, 那么在老的设计器里强行打开会报错.
3.61 web端访问模板, 出现 "页面排队中"
原因:应该是内存快满了, 防宕机插件启动session排队功能了.
3.62 Flash打印截断
原因:一般是因为页面用了非A4的纸张, Flash打印无法传递页面设置到打印机.
解决方案:这种一般建议使用PDF打印或者本地打印.
3.63 war包部署, 修改xml再次部署后未生效
原因:weblogic下, war包部署是不解压的, 所以我们会把所有的xml拷贝到临时目录进行增删改.
解决方案:可以通过访问op=fr_base&cmd=evaluate_formula&expression=jvm()查看缓存路径, 删掉缓存路径的.FineReport80文件夹再部署.
3.64 java.net.BindException
具体报错信息:java.net.BindException:Address already in use: JVM_Bind
原因:一般都是上一次tomcat没有彻底关掉就再次启动导致端口被占用了.
3.65 当前hsql已被另一线程锁定
原因:两个web服务器共用了同一个WebReport. 最常见的, 启动了tomcat, 设计器也用本地目录切了过去.
或者tomcat里用了docBase映射, 映射的地址是tomca/webapps中的WebReport, 这样会被加载两次.
解决方案:删掉db.lck,重启tomcat服务可以解决
3.66 web端654和655错误
原因:加载了有问题的class文件做出的程序数据集
解决方案:程序数据集class必须放在%FR_HOME%\WebReport\WEB-INF\classes\com\fr\data下,编译好了后的class名也不能修改。
3.67 Can't create cache file错误
原因:tomcat下没有temp目录, 或者是temp目录写入权限不够
解决方案:linux下创建temp目录,赋权限777;windows下可以把工程从C盘移到D盘。
拥有自信,努力奋斗,保持乐观积极地情绪,逆着阳光,成功就在前方。自己选择的路,放弃者绝不会成功,成功者绝不放弃。