java.io.File.createTempFile からの権限拒否エラー
java.io.File.createTempFile から権限拒否エラーが発生した場合は、JVM パラメーター -Djava.io.tmpdir が java プロセスで設定されているかどうかを確認します。 java.io.tmpdir パラメーターが見つからなかった場合は、OS のデフォルトの temp ディレクトリへのアクセス権をユーザーに付与します。
説明 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 のデフォルトの temp ディレクトリへのアクセス権をユーザーに付与します。- Linux および Unix では、このディレクトリはデフォルトで
/tmpです。 - Windows では、このディレクトリは、ユーザーのホームディレクトリの下にあります(例:
C:\Users\aemuser\AppData\Local\Temp)。
- Linux および Unix では、このディレクトリはデフォルトで
原因:
AEM java プロセスを所有するユーザーが、java プロセスの temp ディレクトリに書き込むための適切な権限を持っていません。