Java文件上传下载异常(IO Error/Permission denied)

java服务出现IO Error/Permission denied,如下:

Caused by: java.io.IOException: Permission denied
        at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.8.0_232]
        at java.io.File.createTempFile(File.java:2024) ~[na:1.8.0_232]
        at org.apache.poi.util.DefaultTempFileCreationStrategy.createTempFile(DefaultTempFileCreationStrategy.java:110) ~[poi-3.17.jar!/:3.17]
        at org.apache.poi.util.TempFile.createTempFile(TempFile.java:66) ~[poi-3.17.jar!/:3.17]
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:924) ~[poi-ooxml-3.17.jar!/:3.17]
        at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:89) ~[easyexcel-1.1.2-beat1.jar!/:na]
        ... 135 common frames omitted

问题解决步骤:

  • 找到 JVM 参数 -Djava.io.tmpdir,使用ps -ef | grep java
  • 找到此目录,查看权限,一般情况下是jvm process用户的权限问题。
  • 如果没有这个参数。默认的目录是/tmp目录。

顺便说一下目录权限修改:

  • chown -R user:group /tmp/*
  • chown是修改文件归属哪个用户和组
  • -R是递归修改,即把子目录也修改了
  • user:group是java process所属的用户和组
  • tmp/*也可以是/tmp,但是/tmp会把tmp目录本身的归属也该了。tmp默认属于root用户,不建议修改。

你可能感兴趣的:(DevOps)