Error de permiso denegado de java.io.File.createTempFile
Si recibe un error de permiso denegado de java.io.File.createTempFile, averigüe si el parámetro de JVM -Djava.io.tmpdir está establecido en el proceso java. Si no encontró un parámetro java.io.tmpdir, conceda al usuario acceso al directorio temporal predeterminado del sistema operativo.
Descripción description
Entorno
Adobe Experience Manager AEM () (todas las versiones)
Problema/Síntomas
Se produce un error en error.log que informa de java.io.IOException: Permission denied y el seguimiento de pila contiene 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)
Resolución resolution
Averigüe si el parámetro de JVM -Djava.io.tmpdir está establecido en el proceso java.
En Linux:
-
Ejecute este comando:
code language-none ps -ef | grep java -
Revise los parámetros de JVM buscando
-Djava.io.tmpdir
En Windows, Linux o Unix:
-
Vaya a https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime
-
Busque
java.io.tmpdiren la página. -
Copie el valor de
java.io.tmpdiren el portapapeles. -
Vaya a esa ruta en el sistema operativo y conceda al usuario propietario del proceso java acceso total de lectura y escritura a esa carpeta.
-
Si no encontró un parámetro
java.io.tmpdir, conceda al usuario acceso al directorio temporal predeterminado del sistema operativo.- En Linux y Unix, este directorio es
/tmpde forma predeterminada. - En Windows, el directorio se encuentra en el directorio particular del usuario (por ejemplo:
C:\Users\aemuser\AppData\Local\Temp).
- En Linux y Unix, este directorio es
Causa
El usuario propietario del proceso java de AEM no tiene los permisos adecuados para escribir en el directorio temporal del proceso java.