项目场景:

springBoot项目


问题描述

在进行后台导出数据功能时,报错:java.lang.RuntimeException: java.io.IOException:Permission denied

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:89)
	at org.apache.poi.xssf.streaming.SheetDataWriter.<init>(SheetDataWriter.java:72)
	at org.apache.poi.xssf.streaming.SheetDataWriter.<init>(SheetDataWriter.java:77)
	at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheetDataWriter(SXSSFWorkbook.java:342)
	...

原因分析:

当前启动服务的账号,没有临时文件目录的写入权限,导致了创建临时excel的时候,没有权限。


解决方案:

解决方式(来自百度):
(1)直接使用 chmod -R 777 /tmp/poifiles 将临时文件目录权限设为 777
(2)在服务启动的时候设置临时文件的路径为当前启动服务的账号有权限写入的路径,可以使用 System.setProperty(java.io.tmpdir, “xxxx”) 来设置,也可以在启动时加 -Djava.io.tmpdir=xxxx来设置

╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐