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.tmpdir
en la página. -
Copie el valor de
java.io.tmpdir
en 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
/tmp
de 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.