【問題】導出excel發生異常,公司好多應用放在同一台服務器上,有應用 A B C D E F G H I J K L M N O P Q R S T
臨時目錄 /tmp/poifiles 這個文件夾被應用A創建, 所屬用戶為 A,用戶組只有r-x權限,沒有寫權限
,export error request:ExportOrderRequest,error:{}
java.lang.RuntimeException: java.io.IOException: Permission denied
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:662)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:679)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:90)
at com.abc.fb.cms.utils.excelUtil.Excel.createSheet(Excel.java:85)
at com.abc.fb.cms.utils.ExcelSingleExport.<init>(ExcelSingleExport.java:34)
at com.abc.fb.cms.wrap.ExportHelper.newExcelSingleExport(ExportHelper.java:144)
at com.abc.fb.cms.wrap.ExportHelper.export(OrderExportHelper.java:85)
at com.abc.fb.cms.controller.OrderController.lambda$export$0(OrderController.java:326)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(File.java:2024)
at org.apache.poi.util.DefaultTempFileCreationStrategy.createTempFile(DefaultTempFileCreationStrategy.java:110)
at org.apache.poi.util.TempFile.createTempFile(TempFile.java:66)
at org.apache.poi.xssf.streaming.SheetDataWriter.createTempFile(SheetDataWriter.java:87)
at org.apache.poi.xssf.streaming.SheetDataWriter.<init>(SheetDataWriter.java:70)
at org.apache.poi.xssf.streaming.SheetDataWriter.<init>(SheetDataWriter.java:75)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheetDataWriter(SXSSFWorkbook.java:330)
at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:80)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:658)
... 11 common frames omitted
【解決方式】 /tmp/poifiles 文件夾權限設置為 777 或者 把其他應用的臨時目錄改掉,不和其他應用的臨時目錄相同 -Djava.io.tmpdir=/abc-web/tmp