본문 바로가기

Troubleshooting/SDK / Tools

gradlew가 제대로 작동하지 않는다면? (java.lang.NoClassDefFoundError: org/gradle/wrapper/GradleWrapperMain)

이 문제는 안드로이드 스튜디오에서 프로젝트를 작성하여 Github에 공유 후, 다른 컴퓨터에서 동일한 프로젝트를 clone 후 빌드를 시도하다 발생한 에러를 해결하다 알게 되었습니다.


문제는 바로 gradle wrapper가 실행되지 않는 것이였는데요, 아래와 같이 gradlew 명령을 실행하면 GradleWrapperMain을 찾을 수 없다고 하면서 에러 메시지가 표시됩니다.


$ ./gradlew

Exception in thread "main" java.lang.NoClassDefFoundError: org/gradle/wrapper/GradleWrapperMain

Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Could not find the main class: org.gradle.wrapper.GradleWrapperMain.  Program will exit.


불과 몇 분 전 까지만 해도 멀쩡히 잘 빌드되던 프로젝트가, 삭제 후 다시 clone만 했을 뿐인데 빌드가 되지 않는다니....ㅠㅠ 순간 멘붕에 빠져 구글링을 해 보았지만 그닥 명쾌한 해답은 많이 없었고, gradle wrapper쪽에 문제가 있을 것이라는 몇몇 답변을 보게 되었습니다. 


그래서 혹시나...하고 gradle wrapper 디렉토리를 확인한 결과.... gradle wrapper 실행 파일(gradle-wrapper.jar)이 없었습니다..........하아.......


정상적인 경우 아래와 같이 gradle/wrapper 디렉터리에 gradle-wrapper.jar 파일이 있었어야 하는데, 그 당시에는 이 파일이 빠져 있었더군요. 아마 Git에 파일을 추가할 때 빠져버렸나봅니다...ㅠㅠ

위와 같이 gradle wrapper가 누락되어 발생하는 문제는 단순히 gradle wrapper를 다시 만들어 주기만 하면 해결됩니다. 프로젝트 루트 경로에서 아래 명령어를 실행하면 gradle wrapper를 생성해줍니다. (단, 시스템에 gradle이 설치되어 있어야 함)


$ gradle wrap