Post

인텔리제이 테스트 실행 시 ClassNotFoundException 오류 해결

인텔리제이 테스트 실행 시 ClassNotFoundException 오류 해결

들어가며

이번에 과제전형을 진행하는 중 인텔리제이 오류를 겪어 해결과정을 정리해두고자 한다. 어느 회사 과제, 과제 내용, 그리고 관련된 내용이나 코드는 전혀 없음을 미리 밝힌다.

오류 상황

macOS 에서 Intellij 로 Spring Boot 프로젝트를 작업했다. 빌드 및 실행, 테스트 모두 잘 되는 상황이었다.

이를 Windows 환경에서도 잘 되는지 검증하고자 .zip으로 압축하여 윈도우 환경에서 실행해보았다.

빌드 및 실행을 잘 된다…

애플리케이션 실행은 잘 되는 상황이다.

테스트 오류??

오류가 발생했다.

Windows에서는

1
start build\reports\tests\test\index.html

macOS에서는

1
open  build\reports\tests\test\index.html

명령어로 테스트 오류 리포트를 볼 수 있다.

테스트 리포트를 보니…

오류 리포트를 확인해 본 결과, 주된 원인으로 다음과 같은 오류 메시지를 확인할 수 있었다.

1
Caused by: org.gradle.internal.UncheckedException: java.lang.ClassNotFoundException

문제 원인

Windows에서 발생한 이 ClassNotFoundException 오류는 주로 다음과 같은 원인으로 발생한다.

  • 프로젝트 경로 또는 상위 폴더 경로에 한글 등이 포함되어 있을 경우, GradleUTF-8 인코딩 설정이 원활하지 않아 클래스 로드 오류가 발생할 수 있다.

  • IntelliJ 의 실행 및 Gradle 테스트 설정에서 빌드 경로나 클래스패스가 잘못 지정된 경우이다.

  • Windows 와 macOS 간 명령어 차이 및 클래스패스 길이 제한 문제도 일부 영향을 줄 수 있다.

나의 경우 이미 macOS에서 잘 실행되는 테스트였으며, Windows에서도 애플리케이션 실행은 잘 되는 상황이었기에 인텔리제이 설정을 의심해 볼 수 있었다.

해결 방법

Windows 환경에서 프로젝트 경로나 상위 폴더에 한글이 포함되어 있는지 확인하고, 있다면 한글 디렉토리를 모두 영어로 변경한다.

필자의 경우 .zip 파일명을 영어로 변경한 뒤 영어로 작성한 폴더에서 압축해제하였다.

IntelliJ IDEA 설정에서 코드 스타일 > 파일 인코딩 > 인코딩을 UTF-8 로 설정한다.

IntelliJ IDEA 설정에서 Build, Execution, Deployment > Build Tools > Gradle 항목을 열어, “Build and run using” 과 “Run tests using” 설정을 ‘IntelliJ IDEA’로 변경한다.

마치며

Windows 환경에서 macOS와 동일한 Spring Boot 프로젝트를 실행할 때 흔히 겪는 문제 중 하나가 바로 한글 경로로 인한 ClassNotFoundException이다.

이 문제는 JVM의 인코딩 처리와 Windows OS 특성의 차이에서 기인하는 경우가 많으니, 프로젝트 경로에 한글이 포함되지 않도록 주의하는 것이 중요하다.

또한 IntelliJ와 Gradle의 빌드 및 테스트 설정을 명확히 조정하는 것만으로도 쉽게 문제를 해결할 수 있어, 위 해결 방법들을 참고하면 도움이 될 것이다.

본 경험이 Spring Boot를 Windows 환경에서 사용하면서 겪는 비슷한 문제로 고생하는 개발자에게 작은 도움이 되기를 바란다.

테스트 정상 작동


References

This post is licensed under CC BY 4.0 by the author.