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 프로세스의 임시 디렉터리에서 적절한 쓰기 권한이 없습니다.