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
用戶,不建議修改。