24
votes

When I run ./gradlew I get

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)

My project compiles using the Android Studio but stopped compiling from command line

4
A way to bypass it meanwhile: Installed gradle using brew install gradle then run gradle build instead of ./gradlewGal Bracha
Have You tried running ./gradlew build?Opal
Try using Gal's technique for downloading Gradle and run gradle wrapper to regenerate your wrapper. Perhaps something got mistakenly deleted.Mark Vieira
Make sure you have gradle-wrapper.jar in gradle/wrapper/ under the project dir.dmahapatro

4 Answers

39
votes

Probably something went bad. The solution:

  1. Install gradle: brew install gradle
  2. Regenerate wrapper: gradle wrapper
7
votes

See https://github.com/drone/drone/issues/256

My .gitignore had *.jar in it, so I wasn't getting all the jars I needed in my repository.

1
votes

I had the same, or similar, problem when trying to build my app from command line, but with an exception thrown for 'java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context' which did not happen when building within Android Studio. I found out that AS brings along it's own JRE and I resolved the issue by setting 'JAVA_HOME' to the AS JRE path. In my case it turned into:

$ JAVA_HOME=/opt/android-studio/jre ./gradlew build

You can find this path under 'File' -> 'Project Structure' -> 'SDK Location', see screenshot.

enter image description here

0
votes

I hit this issue when I have a directory with a ":" (no quotes, just a colon) in it.

This was on a linux machine.

Before:

"my:directory"

as in

/Users/me/projects/project1/my:directory/

then i renamed it to

/Users/me/projects/project1/my_directory/

and the error went away.