來自 java.io.File.createTempFile 的權限被拒錯誤

說明

環境

Adobe Experience Manager(所有版本)

問題/症狀

error.log 報告 java.io.IOException: Permission denied 堆棧跟蹤 java.io.File.createTempFile 裡面。

01.06.2017 16:34:02.631 *ERROR* qtp1085110594-4453 org.apache.felix.http.jetty Exception while processing request to /system/console/configMgr/com.adobe.cq.experiencelog.impl.ExperienceLogConfigServlet (java.io.IOException: Permission denied)

java.io.IOException: Permission denied

        at java.io.UnixFileSystem.createFileExclusively(Native Method)

        at java.io.File.createTempFile(File.java:2024)

        at org.apache.felix.cm.file.FilePersistenceManager._store(FilePersistenceManager.java:699)

        at org.apache.felix.cm.file.FilePersistenceManager.store(FilePersistenceManager.java:660)

        at org.apache.felix.cm.impl.CachingPersistenceManagerProxy.store(CachingPersistenceManagerProxy.java:242)

        at org.apache.felix.cm.impl.ConfigurationImpl.storeNewConfiguration(ConfigurationImpl.java:462)

        at org.apache.felix.cm.impl.ConfigurationImpl.init(ConfigurationImpl.java:183)

解決方法

了解JVM參數 -Djava.io.tmpdir 是在java程式上設定的。

在Linux上:

  1. 執行此命令:

    ps -ef | grep java
    
  2. 查看JVM參數搜索 -Djava.io.tmpdir

在Windows、Linux或Unix上:

  1. 前往 https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime
  2. 搜尋 java.io.tmpdir 頁面上。
  3. 複製 java.io.tmpdir 剪貼簿。
  4. 前往作業系統上的該路徑並授予擁有 Java 流程的使用者對該文件夾的完全讀取/寫入存取權限。
  5. 如果你找不到 java.io.tmpdir參數,然後授予使用者對預設作業系統臨時目錄的存取權。
    • 在Linux和Unix中,此目錄為 /tmp 依預設。
    • 在Windows中,該目錄位於用戶的主目錄下(例如: C:\Users\aemuser\AppData\Local\Temp)。

原因

擁有 AEM Java 流程的使用者沒有適當的權限來寫入 Java 流程的臨時目錄。

本頁內容