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

問題解決步驟:java

  • 找到 JVM 參數 -Djava.io.tmpdir,使用ps -ef | grep java
  • 找到此目錄,查看權限,通常狀況下是jvm process用戶的權限問題。
  • 若是沒有這個參數。默認的目錄是/tmp目錄。

順便說一下目錄權限修改:apache

  • chown -R user:group /tmp/*
  • chown是修改文件歸屬哪一個用戶和組
  • -R是遞歸修改,即把子目錄也修改了
  • user:group是java process所屬的用戶和組
  • tmp/*也能夠是/tmp,可是/tmp會把tmp目錄自己的歸屬也該了。tmp默認屬於root用戶,不建議修改。
相關文章
相關標籤/搜索