Back-End/Spring

[Error] error: unmappable character (0xEC) for encoding | Build Gradle와 IntelliJ IDEA

달의 조각 2022. 7. 23. 20:26

🍎 문제

인텔리제이에서 테스트를 돌리자 `error: unmappable character (0xEC) for encoding` 에러가 발생했다. 컴파일러의 인코딩 방식이 주석의 한글을 인식하지 못한 것이다.

 

🍎 해결

01. File Encodings 설정 변경

  • File → Settings → Editor → File Encodings로 이동해서 Project Encoding 설정을 `UTF-8`로 변경
  • Help → Edit Custom VM Options... 경로로 이동해서 아래 코드를 추가
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8

 

02.

  • File → Settings → Build, Excution, Deployment 경로로 이동해서 Build and run using 설정을 IntelliJ IDEA로 변경

IntelliJ에서 Java를 gradle를 거쳐서 실행하는데 이렇게 되면 실행 속도가 느릴 때가 있다. 이를 IntelliJ에서 직접 실행하도록 변경하는 것이다.

 


 

Gradle Build vs. IntelliJ IDEA Build

 

- Compile: 프로그래밍 언어 → 기계어, Java는 JVM이 문법 등을 검사
- Build(빌드 ⊃ 컴파일): 프로그래밍 된 코드를 컴파일하고 실행 가능한 결과물로 만드는 과정
인텔리제이와 같은 IDEA에서는 프로젝트를 실행하면 자동으로 빌드를 수행하고, 실행한다.

 

  • Gradle: 증분 빌드 X, 오픈 소스 빌드 자동화 도구 (vs. Maven)
  • IntelliJ IDEA: 증분 빌드 O, 인텔리제이 자체에서 제공하는 빌드 자동화 도구

증분 빌드(incremental build)란, 변경된 부분만 빌드를 하는 방식으로, 빠른 빌드를 원할 경우 선택한다.

 

🤔 빌드 속도가 빠르다고 더 좋을까?

  1. 파일을 삭제하면 이를 캐치하지 못하고 변경 사항이 없다고 판단한다.
  2. 삭제한 파일을 그대로 포함하여 빌드를 한다. → Worst

 

인텔리제이에서는 Build and run using, Run tests using의 두 가지 상황의 방식을 택할 수 있어서 유연하다. 따라서 실제 빌드하고 실행해야 하는 것은 확실히 빌드하기 위해서 Gradle을 선택하고, 테스트할 때는 빠른 빌드를 위해서 IntelliJ IDEA를 선택할 수 있다.

Gradle은 build 폴더로 빌드 결과물이 나오고 IntelliJ IDEA는 out 폴더로 빌드 결과물이 나온다.