본문 바로가기
Language/Java

[JAVA] Failed to create folder. java.io.IOException : 그런 파일이나 디렉터리가 없습니다. 에러 해결

by 광진구뚝배기 2022. 7. 1.

상황

 

회사에서 내가 맡고있는 업체에서 아래와 같은 에러가 나 처리해달라는 문의가 왔다.

 

Failed to create folder. java.io.IOException

 

 

 

에러 로그

 

Failed to create folder.

java.io.IOException : 그런 파일이나 디렉터리가 없습니다. 

   at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java -2)

   at java.io.File.createNewFile(File.java:1012)

 

 

 

해결방법

 

에러 로그를 보면 알 수 있듯이, 폴더 생성에 실패한 것이다. 이유는 크게 두가지가 있다.

 

 

  1. 코드 상의 오류

 

말 그대로 코드를 잘못 짰기 때문에 파일 생성을 할 수 없는것이다.

예를들어, /home/yujin 까지만 있는 경로에 /home/yujin/folder/depth/test 라는 depth 있는 경로를 만든다고 할 때,

mkdir() 패키지로  생성하면 당연히 에러가 나기 때문에 mkdirs()로 하면 된다.

  - mkdir() : 상위 디렉터리가 없는경우 

  - mkdirs() : 상위 디렉터리가 없으면 상위 폴더도 생성한다.

 

이 밖의 자잘한 코드 실수 일 수 있기에 로직을 살펴보면 해결 할 수 있다.

 

 

  2. 권한 설정 오류

 

- 디렉터리 사용자, 그룹 권한 확인

- svn / cvs 등 형상관리 이용하는 것이 있다면, 권한 확인

- 리눅스 그룹 확인 - /etc/group

 

 

이번 문의도 이와 같은 오류였는데 바로 권한 설정의 문제다. 이 문의를 받았을 때 나는 바로 권한 문제라고 생각했다. 그 이유는 여태까지 같은 코드로 정상 동작하다 갑자기 이런 에러를 뱉은 것이기 때문이다.

 

그래서 우선적으로 확인한 것은, 최근 변경한 것이 있는지. 해당 디렉터리 생성 위치에 사용자, 그룹 권한이 맞게 되어있는지 확인했다. 또한 이 업체에서 svn 을 사용하여 커밋하는 방식이라 svn의 권한 설정도 확인했다.

 

보통 디렉터리 생성 위치쪽 권한이나 svn 권한을 확인하면 해결 된다. 그러나 이 업체에선 모든 권한을 확인해봐도 이상 없었다.

 

한참을 헤매다 찾아낸것은 os 쪽 그룹 조회를 해보니 해당 디렉토리 그룹이 중복돼서 난 오류였다.

 

개발자 누군가가 사용자를 실수로 만들어 삭제했는데 passwd 만 삭제하고 group 쪽은 확인하지 못한것이었다. 그래서 중복된 그룹을 삭제하니 해결됐다.

 

 

반응형

댓글