test 실행 시 GradleWorkerMain을 찾을 수 없는 예외

viiviii·2021년 11월 13일
1

gradle을 사용한 프로젝트에서 테스트 실행 시 빌드가 실패하며 아래와 같은 예외 발생

오류: 기본 클래스 worker.org.gradle.process.internal.worker.GradleWorkerMain을(를) 찾거나 로드할 수 없습니다.
원인: java.lang.ClassNotFoundException: worker.org.gradle.process.internal.worker.GradleWorkerMain
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> Process 'Gradle Test Executor 12' finished with non-zero exit value 1

나의 상태

  • 몇 분 전까지 잘 쓰고 있었음
  • ./gradlew 성공
  • ./gradlew test 실패
  • gradle-wrapper.jar 등 파일, 폴더 제대로 있음

내가 해결한 방법

gradle 데몬 다시 시작

./gradlew --stop

예상하는 나의 발생 이유

갑자기 뭐가 궁금해서 gradle을 깨끗하게 초기화하던 중 ./gradlew build --refresh-dependencies을 사용했고, 약간 느리길래 끄고 명령어를 한 번 더 썼더니 아래와 같은 메세지가 떴었음

1 busy Daemon could not be reused, ...

이 땐 그냥 지나쳤지만 내가 cmd+z로 꺼서 gradle daemon을 백그라운드에 멈춰놓고 다른 걸 해서 꼬인 것 같다

stop 이후 ./gradlew --status로 확인해 보니 2개의 데몬이 있었는데, 왜 데몬이 2개이고 난 stop 명령어를 사용했는데 왜 데몬이 새로 실행됐을까?
-> 문서를 읽어보니 idle 상태나 compatible한 데몬이 없으면 새로운 gradle 데몬을 시작한다고 함

./gradlew --status 명령어 실행 이미지

JDK가 설치되어 있는 경우jps 명령어를 실행하면 데몬이 중지되었는지 쉽게 확인할 수 있다고 함

jps 명령어 실행 이미지

GradleDaemon이 현재는 실행 중인 것을 확인할 수 있음

다음에도 이런 증상이 나타나면 어떤 상태인지 확인해봐야겠다


링크

gradle_daemon#sec:status 문서
도움이 된 stackoverflow 답변

0개의 댓글