java.io.File.createTempFile からの権限拒否エラー
java.io.File.createTempFileから権限が拒否されたエラーが発生した場合は、JVM パラメーター-Djava.io.tmpdirがJava プロセスで設定されているかどうかを確認します。 java.io.tmpdir パラメーターが見つからない場合は、デフォルトのOS一時ディレクトリへのアクセス権をユーザーに付与します。
説明 description
環境
Adobe Experience Manager(AEM)(すべてのバージョン)
問題/症状
java.io.IOException: Permission deniedを報告するerror.logでエラーが発生し、スタックトレースに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)
解決策 resolution
JVM パラメーター-Djava.io.tmpdirがJava プロセスで設定されているかどうかを確認します。
Linuxで:
-
次のコマンドを実行します。
code language-none ps -ef | grep java -
-Djava.io.tmpdirを検索するJVM パラメーターを確認してください
Windows、Linux、またはUnixの場合:
-
https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntimeに移動します
-
ページで
java.io.tmpdirを検索します。 -
java.io.tmpdirの値をクリップボードにコピーします。 -
オペレーティングシステム上のそのパスに移動し、Java プロセスを所有するユーザーにそのフォルダーへの完全な読み取り/書き込みアクセス権を付与します。
-
java.io.tmpdirパラメーターが見つからない場合は、デフォルトのOS一時ディレクトリへのアクセス権をユーザーに付与します。- LinuxおよびUnixでは、このディレクトリはデフォルトで
/tmpです。 - Windowsでは、ディレクトリはユーザーのホームディレクトリの下にあります(例:
C:\Users\aemuser\AppData\Local\Temp)。
- LinuxおよびUnixでは、このディレクトリはデフォルトで
原因:
AEM java プロセスを所有するユーザーが、java プロセスの temp ディレクトリに書き込むための適切な権限を持っていません。