Gradle - Error: Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain
intellij 터미널을 통해 ./gradlew clean test 명령어를 입력하는데 다음과 같은 오류가 발생했다.
Could not write standard input to Gradle Test Executor 1.
java.io.IOException: 파이프가 닫히는 중입니다
at java.base/java.io.FileOutputStream.writeBytes(Native Method)
at java.base/java.io.FileOutputStream.write(FileOutputStream.java:349)
at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:68)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:53)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
> Task :test FAILED
Error: Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain
Caused by: 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 1' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
이를 해결하기 위해 여러 정보를 찾아서 따라 했는데 왜 나만 해결이 안 되는 것인지..
아래는 에러를 해결하기 위해 한 과정과 결과이다.
1. Java 버전 맞추기
이 작업으로 해결이 될지 의구심이 들었지만 일단 버전을 설정할 수 있는 것은 다 했다.
- 환경 변수
- Java 경로 및 버전 확인
- Project Structure
- Project Settings - Project의 SDK
- Project Settings - Modules - Dependencies의 SDK
- Settings - Build, Execution, Deployment
- Build Tools - Gradle의 Gradle JVM
- Compiler - Java Compiler의 Project bytecode version
나는 버전이 다 맞는 상태였다.
2. IntelliJ Gradle Build and Run 설정 바꾸기
검색해서 나온 내용을 보면 이 설정을 바꾸고 해결되었다고 한다. 하지만 나는 해결되지 않았다.
그래도 이 작업은 해야 되는 듯하다.
- Settings - Build, Execution, Deployment - Build Tools - Gradle의
Build and run using / Run tests using을 IntelliJ IDEA로 바꾸기
3. IntelliJ 삭제 후 다시 설치하기
해결이 안 되는 것이 이상해서 보편적인 해결 방법인 삭제 후 다시 다운로드하기를 했다.
구현한 코드는 git에 올려놓았기에 IntelliJ와 연관된 모든 파일을 함께 지웠다. 하지만 해결되지 않았다.
4. 정보 수집하기
이제 스스로 해결해야 한다고 생각하고 여러 정보를 찾아보았다.
정말 많은 정보를 찾아보았는데 그중 가장 눈에 들어온 것은 아래 페이지의 글이었다.
같은 오류에 대한 내용을 다루는데, 'gradle을 찾지 못해 test 실행이 되지 않는 문제'라는 문구가 있다.
gradle을 찾지 못한다는 것에 기반해 원인을 찾기 시작했다.
그러던 중 ./gradlew --info 명령어를 통해 문제의 원인으로 의심되는 부분을 찾을 수 있었다. 경로에 한글 이름이 있던 것이다.
5. 한글 지우기
이제 한글을 지워야 하는데 저 부분은 사용자명이라서 변경이 거의 불가능했다.
.gradle을 다른 곳으로 옮기려고 했으나 이도 잘 안 됐다.
그래서 영어로 된 windows 사용자 계정을 새로 만들었다.
Developer라는 이름으로 만들고 이 계정에서 새로운 intelliJ 프로젝트를 생성한 후 git에 올려둔 코드를 내려받았다.
이후 ./gradlew --info 명령어를 입력한 결과이다.
한글이 사라지고 그 자리에 Developer가 들어간 모습이다.
이제 ./gradlew clean test 명령어를 입력하면
BUILD SUCCESSFUL이 나온다!
문제는 경로에 한글이 있었기 때문이었다.
일단 해결은 했지만 구현할 때마다 계정을 바꿔가면서 진행하기도 애매하고 어떻게 할지는 좀 더 고민해야겠다.