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.tmpdirna página. -
Copie o valor de
java.io.tmpdirpara 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 é
/tmppor 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.