Tips

인텔리제이 java: illegal character: '\ufeff' 에러날 때

chaani 2021. 10. 15. 17:38

예전에 윈도우 환경의 이클립스 IDE 로 작성했던 java 파일을 맥 환경의 인텔리제이에서 빌드 하려 하니 아래와 같은 에러가 발생했습니다.

 

 

구글링 해보니 해당 java 파일에 UTF-8 BOM이 추가되어 있어서 맥 환경의 IDE 상에서 이를 해석할 수 없어 나타나는 에러였습니니다.

 

아마도 윈도우 이클립스에서 java 파일을 작성할 때 자동으로 BOM이 추가되었던 것 같습니다.

 

따라서 BOM을 제거해준다면 정상적으로 파일을 읽을 수 있고 빌드도 가능합니다.

 

이를 위해서는 여러 가지 방법이 있으나 저의 경우에는 한 개가 아닌 다량의 파일을 처리해야 했기 때문에 아래처럼 Bash 스크립트를 통해 일괄 처리하였습니다.

 

find . -type f -name '*.java' | xargs -I{} sed -i '' $'1s/\xef\xbb\xbf//' {}

 

현재 경로의 모든 하위 경로에서 '. java' 파일을 모두 찾아 sed 명령어를 통해 BOM 유니코드 부분을 치환합니다.

 

맥과 같은 BSD 계열이 아닌 Linux 인 경우 sed 명령어를 아래와 같이 바꿔야 합니다.

sed -i '1s/^\xEF\xBB\xBF//'