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:

  1. Führen Sie diesen Befehl aus:

    code language-none
    ps -ef | grep java
    
  2. Überprüfen Sie die JVM-Parameter, die nach -Djava.io.tmpdir suchen.

Unter Windows, Linux oder Unix:

  1. Wechseln Sie zu https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime

  2. Suchen Sie auf der Seite nach "java.io.tmpdir".

  3. Kopieren Sie den Wert "java.io.tmpdir" in die Zwischenablage.

  4. 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.

  5. Wenn Sie keinen Parameter java.io.tmpdirgefunden 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).

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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f