Erro de permissão negada do java.io.File.createTempFile
Se você receber um erro de permissão negada de java.io.File.createTempFile
, descubra se o parâmetro JVM -Djava.io.tmpdir
está definido no processo java. Se você não encontrou um parâmetro java.io.tmpdir
, 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
Erro no error.log
que relata java.io.IOException: Permission denied
e o rastreamento de pilha contém 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)
Resolução resolution
Descubra se o parâmetro JVM -Djava.io.tmpdir
está definido no processo java.
No Linux:
-
Execute este comando:
code language-none ps -ef | grep java
-
Revise os parâmetros JVM pesquisando por
-Djava.io.tmpdir
No Windows, Linux ou Unix:
-
Ir para https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime
-
Pesquise por
java.io.tmpdir
na página. -
Copie o valor de
java.io.tmpdir
para a área de transferência. -
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.
-
Se você não encontrou um parâmetro
java.io.tmpdir
, 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
).
- No Linux e Unix, esse diretório é
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.