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