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:

  1. Führen Sie diesen Befehl aus:

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

Unter Windows, Linux oder Unix:

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

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

  3. Kopieren Sie den Wert von 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 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).

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