问题: 项目部署在tomcat后,导出excel时报错,异常信息如下:
[ ERROR]:2016-09-11 13:18:43 [http-apr-8080-exec-2] MonitorCompanyController:149 - 导出动态监控公司列表失败!失败信息:java.io.IOException: 系统找不到指定的路径。 java.lang.RuntimeException: java.io.IOException: 系统找不到指定的路径。 at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:637) ~[poi-ooxml-3.12-20150511.jar:3.12] at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:654) ~[poi-ooxml-3.12-20150511.jar:3.12] at com.srd.ljzd.util.excel.ExportExcel.initialize(ExportExcel.java:190) ~[classes/:?] at com.srd.ljzd.util.excel.ExportExcel.<init>(ExportExcel.java:171) ~[classes/:?] at com.srd.ljzd.controller.monitor.MonitorCompanyController.exportMonitorCompanyList(MonitorCompanyController.java:111) [classes/:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_67] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_67] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_67] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_67] ...原因: 使用POI导出文件的时候,会在容器的临时文件夹中生成临时文件,如果临时文件夹不存在或者没有权限创建文件,那么就会提示IO错误。项目部署windows2008上面的tomcat中,因为权限原因导致无法再tomcat目录项目的temp文件夹中创建临时文件,所以报异常。
解决方案: 1,修改tomcat目录权限,给予系统可操作的权限; 2,修改tomcat临时文件夹的路径,保证新的文件夹有可操作的权限。在tomcat的bin目录下找到catalina.bat文件,在这个文件中有个-Djava.io.tmpdir的参数,是用来存放io临时文件的目录,默认为tomcat中temp目录,可以将其设置成自己有操作权限的文件夹,set CATALINA_TMPDIR=E:\temp;