Fehler wegen verweigerter Berechtigung von java.io.File.createTempFile
Wenn Sie einen Fehler vom Typ „Berechtigung verweigert“ von java.io.File.createTempFile erhalten, überprüfen Sie, ob der JVM-Parameter "-Djava.io.tmpdir" im Java-Prozess festgelegt ist. Wenn Sie keinen java.io.tmpdir Parameter gefunden haben, gewähren Sie dem Benutzer Zugriff auf das standardmäßige temporäre Verzeichnis des Betriebssystems.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM) (alle Versionen)
Problem/Symptome
In der error.log, die java.io.IOException: Permission denied meldet, tritt ein Fehler auf, und der Stacktrace ist darin 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)
Auflösung resolution
Finden Sie heraus, 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 und suchen Sie nach
-Djava.io.tmpdir
Unter Windows, Linux oder Unix:
-
Wechseln Sie zu https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime
-
Suchen Sie nach
java.io.tmpdirauf der Seite. -
Kopieren Sie den Wert von
java.io.tmpdirin 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
java.io.tmpdirParameter gefunden haben, gewähren Sie dem Benutzer Zugriff auf das standardmäßige temporäre Verzeichnis des Betriebssystems.- Unter Linux und Unix ist dieses Verzeichnis 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 dieses Verzeichnis 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.