来自 java.io.File.createTempFile 的权限被拒绝错误

上次更新: 2023-11-17

如果您从收到权限被拒绝错误 java.io.File.createTempFile,了解JVM参数 -Djava.io.tmpdir 是在java进程中设置的。 如果您没有找到 java.io.tmpdir 参数,然后授予用户对默认操作系统临时目录的访问权限。

描述

环境

Adobe Experience Manager (AEM)(所有版本)

问题/症状

中出现错误 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 进程的临时目录。

在此页面上