본문 바로가기
자바/스프링부트

java.lang.ClassNotFoundException 해결하기

by huffpuffkin 2025. 12. 10.

MSA구조 프로젝트에서 모듈 테스트를 진행하던 도중 Build failed가 되었다. 

 

 

 

 

 

 

 

 

명확한 오류가 나오지 않아 다음 명령어를 cmd 창에서 실행했다. 

gradlew :common:snowflake:test --stacktrace

 

 

 

 

 

 

 

 

다음과 같은 오류를 발견할 수 있었다. 

 

Caused by: org.gradle.api.internal.tasks.testing.TestWorkerFailureException: Test process encountered an unexpected problem.
        at org.gradle.api.internal.tasks.testing.logging.TestCountLogger.handleWorkerFailures(TestCountLogger.java:183)
Caused by: org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'kuke.board.common.snowflake.SnowflakeTest'.
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:56)
Caused by: java.lang.ClassNotFoundException: kuke.board.common.snowflake.SnowflakeTest
        at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:184)
        ... 20 more

 

요약하자면 Gradle이 SnowflakeTest 클래스를 찾지 못해서 ClassNotFoundException이 발생하는 상황이었다.

 

 

 

 

 

 

 

 

 

 

하지만 테스트 코드의 위치 자체는 올바르게 src>test>java 하위에 존재하고 있었다. 

구글링을 조금 해보니 프로젝트가 위치한 경로에 한글이 존재하면 인코딩 시 깨져서 발생할 수 있는 문제라고 한다. 실제로 C:\Users\[user명]\Desktop\[한글 디렉토리명]으로 되어 있기는 했다. 

 

 

 

 

 

 

 

 

찾아본 결과 다음 설정을 진행하면 된다고 한다. 

 

1. vm 옵션 설정하기

루트 경로에 gradle.properties 파일을 생성해

Dfile.encoding=UTF-8
Dconsole.encoding=UTF-8

위 내용을 명시해준다. 

 

2. 빌드도구 > Gradle에서 빌드/테스트 실행환경 IntelliJ IDEA로 변경하기 

 

 

 

 

3. 파일 인코딩에서 인코딩 관련을 모두 UTF-8로 설정하기

 

 

 

 

 

 

 

 

보통은 이 3개의 과정을 모두 거치면 테스트가 성공하는데...

 

나는 여전히 실행이 되지 않고 있는 상태였다. 

 

 

 

 

 

 

 

따라서 프로젝트 디렉터리를 모두 영어로 변경해준 뒤 다시 실행해보았더니

테스트에 성공했다.