Erro de permissão negada do java.io.File.createTempFile

Se você receber um erro de permissão negada do java.io.File.createTempFile, descubra se o parâmetro JVM -Djava.io.tmpdir está definido no processo java. Se você não encontrou um java.io.tmpdir e conceda ao usuário acesso ao diretório temporário padrão do sistema operacional.

Descrição description

Ambiente

Adobe Experience Manager (AEM) (todas as versões)

Problema/Sintomas

Ocorre um erro na variável error.log que relata java.io.IOException: Permission denied e o rastreamento de pilha possui java.io.File.createTempFile nele.

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)

Resolução resolution

Descubra se o parâmetro JVM -Djava.io.tmpdir está definido no processo java.

No Linux:

  1. Execute este comando:

    code language-none
    ps -ef | grep java
    
  2. Revise os parâmetros JVM procurando por -Djava.io.tmpdir

No Windows, Linux ou Unix:

  1. Ir para https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime

  2. Pesquisar por java.io.tmpdir na página.

  3. Copie o valor de java.io.tmpdir para a área de transferência.

  4. Vá para esse caminho no Sistema operacional e conceda ao usuário proprietário do processo java acesso completo de leitura/gravação a essa pasta.

  5. Se você não encontrou um java.io.tmpdire conceda ao usuário acesso ao diretório temporário padrão do sistema operacional.

    • No Linux e Unix, esse diretório é /tmp por padrão.
    • No Windows, o diretório está no diretório base do usuário (por exemplo: C:\Users\aemuser\AppData\Local\Temp).

Causa

O usuário proprietário do processo java do AEM não tem permissões apropriadas para gravar no diretório temporário do processo java.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f