jxl在linux环境下报java.lang.ArrayIndexOutOfBoundsException
2014-07-16 14:48
671 查看
转自:http://lzqdll.blog.163.com/blog/static/200607183201111635447767/
以上错误只有在linux环境下才会出现,在windows下正常。
根据错误信息的提示,发现问题出在WriteAccessRecord文件里,分析代码发现,byte数组data的最大长度被定义为112,当被传入的参数userName达到一定长度时就会抛错。
跟踪代码WritableWorkbookImpl发现,userName实际就是WorkbookSettings类中的writeAccess字段,亦即生成Excel是的用户信息。可能在linux环境UTF8下每个汉字的字节数为3位(Windows中是2位)的缘故,出现了上诉的奇异现象。
只要在代码中强制设置变量WorkbookSettings.writeAccess的值即可,例如:
java.lang.ArrayIndexOutOfBoundsException Caused by: java.lang.System.arraycopy(Native Method) Caused by: jxl.biff.StringHelper.getBytes(StringHelper.java:127) Caused by: jxl.write.biff.WriteAccessRecord.<init>(WriteAccessRecord.java:59) Caused by: jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:726)
以上错误只有在linux环境下才会出现,在windows下正常。
根据错误信息的提示,发现问题出在WriteAccessRecord文件里,分析代码发现,byte数组data的最大长度被定义为112,当被传入的参数userName达到一定长度时就会抛错。
跟踪代码WritableWorkbookImpl发现,userName实际就是WorkbookSettings类中的writeAccess字段,亦即生成Excel是的用户信息。可能在linux环境UTF8下每个汉字的字节数为3位(Windows中是2位)的缘故,出现了上诉的奇异现象。
只要在代码中强制设置变量WorkbookSettings.writeAccess的值即可,例如:
WorkbookSettings settings = new WorkbookSettings (); settings.setWriteAccess(null); WritableWorkbook workbook = Workbook.createWorkbook(new File("C:/test.xls"), wb, settings);
相关文章推荐
- Linux环境下 使用JXL生成Excel时发生java.lang.ArrayIndexOutOfBoundsException
- jxl读取excel,Java heap space,ArrayIndexOutOfBoundsException,java.lang.System.arraycopy(Native Method),
- 在Linux环境下使用JXL生成Excel时发生ArrayIndexOutOfBoundsException错误
- java项目从win上布署到linux上报java.lang.ArrayIndexOutOfBoundsException错误
- 解决jxl导出excel异常:java.lang.ArrayIndexOutOfBoundsException
- 验证码linux下出不来的问题 java.lang.ArrayIndexOutOfBoundsException at sun.font.CompositeFont.getSlotFont
- 使用JXL生成Excel时发生java.lang.ArrayIndexOutOfBoundsException错误
- JXL导出Excel抛java.lang.ArrayIndexOutOfBoundsException: 5
- [经验小结]jxl写excel时产生“java.lang.ArrayIndexOutOfBoundsException: 5”问题的解决办法
- jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误
- jxl导出excel异常:java.lang.ArrayIndexOutOfBoundsException: 31
- jxl 错误 java.lang.ArrayIndexOutOfBoundsException: 441
- Webshpere启动报 java.lang.ArrayIndexOutOfBoundsException 错
- Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法
- java.lang.ArrayIndexOutOfBoundsException: 0错误
- hadoop报错: java.lang.ArrayIndexOutOfBoundsException
- Proguard 4.x error - java.lang.ArrayIndexOutOfBoundsException
- java.lang.ArrayIndexOutOfBoundsException
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
- java.lang.ArrayIndexOutOfBoundsException: 3184