異常堆疊明確指向 java.io.IOException: 權限不夠,發生在 Ehcache 嘗試創建磁盤存儲文件時:
Caused by: java.io.IOException: 權限不夠
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1006)
at net.sf.ehcache.DiskStorePathManager$DiskStorePath.<init>(DiskStorePathManager.java:322)
Tomcat 以普通用戶(如 hexuan)啟動,但 Ehcache 默認磁盤存儲路徑(通常為 java.io.tmpdir 或當前工作目錄下的 ehcache 目錄)權限屬於 root 或其他用戶,導致普通用戶無法寫入創建 .data/.index 文件。
ehcache.xml 中顯式配置 <diskStore path="java.io.tmpdir/myapp-ehcache"/>,確保該路徑屬於 Tomcat 運行用戶且可寫。chown -R hexuan:hexuan /path/to/ehcache/dirchmod -R 755 /path/to/ehcache/dir<cache ... overflowToDisk="false" /> 禁用磁盤持久化(僅適合開發環境)。修改後重啟 Tomcat,觀察日志不再出現 CacheException: java.io.IOException: 權限不夠,應用正常啟動。
核心原則:確保緩存框架的磁盤存儲路徑對運行進程用戶可寫。