Fehler wegen verweigerter Berechtigung von java.io.File.createTempFile
Wenn Sie einen Fehler wegen verweigerter Berechtigung von java.io.File.createTempFile
erhalten, überprüfen Sie, ob der JVM-Parameter -Djava.io.tmpdir
im Java-Prozess festgelegt ist. Wenn Sie den Parameter java.io.tmpdir
nicht gefunden haben, gewähren Sie dem Benutzer Zugriff auf den standardmäßigen temporären Ordner des Betriebssystems.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM) (alle Versionen)
Problem/Symptome
Ein Fehler tritt in der error.log
auf, die java.io.IOException: Permission denied
meldet und die Stapelablaufverfolgung java.io.File.createTempFile
enthält.
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)
Auflösung resolution
Ermitteln Sie, ob der JVM-Parameter -Djava.io.tmpdir
im Java-Prozess festgelegt ist.
Unter Linux:
-
Führen Sie diesen Befehl aus:
code language-none ps -ef | grep java
-
Überprüfen Sie die JVM-Parameter, die nach
-Djava.io.tmpdir
suchen.
Unter Windows, Linux oder Unix:
-
Wechseln Sie zu https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime
-
Suchen Sie auf der Seite nach "
java.io.tmpdir
". -
Kopieren Sie den Wert "
java.io.tmpdir
" in die Zwischenablage. -
Wechseln Sie zu diesem Pfad auf dem Betriebssystem und gewähren Sie dem Benutzer, dem der Java-Prozess gehört, uneingeschränkten Lese-/Schreibzugriff auf diesen Ordner.
-
Wenn Sie keinen Parameter
java.io.tmpdir
gefunden haben, gewähren Sie dem Benutzer Zugriff auf den standardmäßigen temporären Ordner des Betriebssystems.- Unter Linux und Unix ist dieser Ordner standardmäßig
/tmp
. - Unter Windows befindet sich der Ordner im Basisverzeichnis des Benutzers (z. B.
C:\Users\aemuser\AppData\Local\Temp
).
- Unter Linux und Unix ist dieser Ordner standardmäßig
Ursache
Der Benutzer, dem der AEM Java-Prozess gehört, verfügt nicht über die entsprechenden Berechtigungen zum Schreiben im temporären Verzeichnis des Java-Prozesses.