我已经和运行在Windows机器上很细的几JasperReports的。问题开始了,当报告被设置为与zOS上操作系统大型机运行。

问题是:当碧玉创建报表似乎从数据库中读取表的元数据,并在此基础上预计数据来点击。 例如:如果我有类型为varchar(20)的柱,然后碧玉将等待20个字符仅即使报告字段被定义为字符串。

这不会在Windows环境下发生,但在大型机上的字符编码是EBCDIC,所以列可能对主机19个字符,但编码当其返回报告23个或24个字符。

注意:这个问题只发生在非英文字符。

<强>更新结果 当碧玉正在创建的报告会抛出ConversionBufferFull,我没有完整的痕迹,因为我无法访问主机日志。仅称为COUNTRY_DESC一列,如果值是周围17-20个字符出现该问题,发生异常。

正如我所提到的主机上的字符集是EBCDIC,但是当它的读通过JDBC其转换为Unicode。例如在EBCDIC字将是17个字符,但转换时,它成为22一些奇怪的原因碧玉预计20此字段仅

有帮助吗?

解决方案

JasperReports的本身不管理数据转换,也不字段长度。这看起来像JDBC驱动程序的问题。

谢尔曼 的JasperSoft

其他提示

sun.io.ConversionBufferFullExceptionsun.io字符编码转换器,并且可以冒泡通过java.io类在旧版本的Java的抛出。此API已弃用了一段时间,并且不再使用自爪哇6 - 。java.nio.charset来代替

它是在任一的JasperReports,JDBC驱动程序或由这两个所使用的东西字符转换错误。我不认为这有什么关系从JDBC结果本身读取元数据,尽管它可能是在元数据被错误地转换的字符串。

这是很难把责任都推或想出一个变通办法没有堆栈跟踪。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top