Could not find or load main class org.gradle.wrapper.GradleWrapperMain

Android StudioGradleAndroid Gradle-PluginGradlew

Android Studio Problem Overview


I cleaned the whole project by deleting local directories like ~/.gradle, ~/.m2 ~./android and ~/workspace/project/.gradle and chosing File -> Invalidate Caches / Restart... in Android Studio. Now execution of the command ./gradlew leads to the following output:

usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain

Needless to say, I deleted too much, the question is how can it be repaired again? Do you have any ideas how to fix this?

Android Studio Solutions


Solution 1 - Android Studio

In addition to @RaGe's answer may be the situation I faced where i had a global git ignore that was ignoring .jar files and so the gradle wrapper jar was never being committed. Thus I was getting that error on the Jenkins server after an attempted /var/lib/jenkins/my_project/gradlew build. I had to explicitly force an add of the jar and then commit:

git add -f gradle/wrapper/gradle-wrapper.jar

Solution 2 - Android Studio

Your gradle wrapper is missing, broken or corrupted.

--
What is gradle wrapper:

gradlew is the gradle wrapper executable - batch script on windows and shell script elsewhere. The wrapper script when invoked, downloads the defined gradle version and executes it. By distributing the wrapper with your project, anyone can work with it without needing to install Gradle beforehand. Even better, users of the build are guaranteed to use the version of Gradle that the build was designed to work with.

--
Restoring gradle wrapper:

It used to be that you needed to add a wrapper task to your build.gradle to restore gradle wrapper and all its dependencies. For instance:

task wrapper(type: Wrapper) {
    gradleVersion = '4.1'
}

Newer versions of gradle do not require this. It is now a built-in task. Just run:

gradle wrapper

You can also supply additional flags to specify versions etc

gradle wrapper --gradle-version 6.2 --distribution-type all

When you run this task, a gradle wrapper script, and the required jar files are added to your source folders. Properties are stored in gradle/wrapper/gradle-wrapper.properties

(You may need to install gradle locally to run this. brew install gradle on mac for instance. See more detailed instructions here)

--
Why was it missing in the first place?

OP seems to have deleted something that gradle wrapper depends on.

But a common reason is that a .gitignore entry prevents wrapper jars from being checked into git. Note that the .gitignore in effect may be in the source folder, or a global one in your user home folder or git global configuration. It is common to have a *.jar entry in .gitignore.

You can add an exception for gradlew's jar files in .gitignore

*.jar
!gradle/wrapper/gradle-wrapper.jar

or force add the wrapper jar into git

git add -f gradle/wrapper/gradle-wrapper.jar

--
Ref: Gradle Wrapper

Solution 3 - Android Studio

What worked for me is to first run:

 gradle wrapper

After successful build I was able to run

./gradlew assembleRelease

>Note: To be able run gradle wrapper first run brew install gradle. If installation successful run gradle wrapper from project root.

Source and thanks: http://gradle.org/docs/current/userguide/gradle_wrapper.html and https://stackoverflow.com/users/745574/rage

Solution 4 - Android Studio

In my case it was a global .gitignore, as explained in @HankCa's answer.

Instead of forcefully adding the jar, which you'll need to remember to do in each Gradle project, I added an override to re-include the wrapper jar in my global .gitignore:

*.jar
!gradle/wrapper/gradle-wrapper.jar

This is useful to me as I have many projects that use Gradle; Git will now remind me to include the wrapper jar.

This override will work so long as no directories above gradle-wrapper.jar (such as gradle and wrapper) are ignored -- git will not descend in to ignored directories for performance reasons.

Solution 5 - Android Studio

In my case, I left out wrapper sub folder while copying gradle folder and got the same error.

Could not find or load main class org.gradle.wrapper.GradleWrapperMain

make sure you have the correct folder structure if you copy wrapper from other location.

├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

Solution 6 - Android Studio

I followed the answers from above when i ran into this. And If you are having this issue than make sure to force push both jar and properties files. After these two, i stopped getting this issue.

git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties

Solution 7 - Android Studio

You are probably missing gradle-wrapper.jar file under directory gradle/wrapper in your project.

You need to generate this file via this script in build.gradle file as below,

task wrapper(type: Wrapper) {
   gradleVersion = '2.0' // version required
}

and run task:

gradle wrapper

With gradle 2.4 (or higher) you can set up a wrapper without adding a dedicated task:

gradle wrapper --gradle-version 2.3

OR

gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip

All the details can be found this link

Solution 8 - Android Studio

In my case (using windows 10) gradlew.bat has the following lines of code in:

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

The APP_HOME variable is essentially gradles root folder for the project, so, if this gets messed up in some way you are going to get:

> Error: Could not find or load main class > org.gradle.wrapper.GradleWrapperMain

For me, this had been messed up because my project folder structure had an ampersand (&) in it. Eg C:\Test&Dev\MyProject

So, gradel was trying to find the gradle-wrapper.jar file in a root folder of C:\Test (stripping off everything after and including the '&')

I found this by adding the following line below the set APP_HOME=%DIRNAME% line above. Then ran the bat file to see the result.

echo "%APP_HOME%"

There will be a few other 'special characters' that could break a path/directory.

Solution 9 - Android Studio

The problem statement is simple that its not able to locate the executable main class file.

If you are using gradle wrapper in your project, you should have strucutre as below

├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat

When you execute ./gradlew , it looks for the classpath and as per the code in gradlew or gradlew.bat, there is a line to add gradle-wrapper.jar to classpath

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

Now in my case there was an entry in the .gitignore as *.jar which excluded the gradle-wrapper.jar as well when the first commit was made.

So, to bring back the file, you have to execute below task

gradle wrapper

If you are not using latest gradle version then you have to have a wrapper task in build.gradle as below. This defines which gradle version will be bundled in wrapper. For latest versions of gradle, wrapper task is implicit.

task wrapper(type: Wrapper) {
    gradleVersion = '4.8' 
    //change this as per your project. Refer to distributionUrl in gradle-wrapper.properties to confirm the version
}

Once you execute the task, the gradle-wrapper-4.8.jar will be downloaded and dropped in the gradle/wrapper folder (as explained in above tree structure). Rename the file to gradle-wrapper.jar

However, as *.jar was excluded in the .gitignore file, I still cannot checkin it to store in github.

So add the below line in the .gitignore file to exclude gradle-wrapper.jar from ignored jars list due to *.jar.

!gradle-wrapper.jar

Git has actually shared sample .gitignore files for all programming languages.

Please refer for gradle andjava

Solution 10 - Android Studio

I just copied gradle-wrapper.jar from one of my previous projects from path /android/gradle/wrapper and pasted into my app on the same path /android/gradle/wrapper and it worked perfect.

Chill Pill :)

Solution 11 - Android Studio

you can also copy the gradlew.bat into you root folder and copy the gradlew-wrapper into gradlew folder.

that's work for me.

Solution 12 - Android Studio

I saw the same error but in my case it was a fresh Git installation without LFS installed. The repo in question was set up with LFS and the gradle-wrapper.jar was in LFS so it only contained a pointer to the LFS server. The solution was simple, just run:

git lfs install

And a fresh clone did the trick. I suppose git lfs pull or just a git pull could have helped as well but the person with the problem decided to do a fresh clone instead.

Solution 13 - Android Studio

If you are using MacOS and the ./gradle/wrapper/gradle-wrapper.jar file already exists but it still throws the same error, it might be due to MacOS java permissions on the Documents folder.

Go to System Preferences -> Security and Privacy -> Privacy Tab -> Files and Folders -> Java, and check the "Documents folder" checkbox (or any other that might appear where you are holding your apps).

I fought with this thing for hours so I hope it's useful for someone.

Solution 14 - Android Studio

@HankCa solved the problem in my case as well. I decided to change my dangerous **/*.jar ignores to self-explanatory ones like src/**/lib/*.jar to avoid such problems in the future. Ignores starting with */ are a bit too hazardous, at least to me. And it's always a good idea to get the idea behind a .gitignore row just by looking at it.

Solution 15 - Android Studio

In my case gradle-wrapper.jar got corrupted after replacing a bunch of files. Reverting to original one resolved the problem.

Solution 16 - Android Studio

I fixed this problem with next fix (maybe it will help someone):

Just check if the parent folders of your project folder have names with spaces or other forbidden characters. If yes - remove it.

"C:\Users\someuser\Test Projects\testProj" - on this case "Test Projects" should be "TestProjects".

Solution 17 - Android Studio

In my case , I had removed gradlew and gradle folders from project. Reran clean build tasks through "Run Gradle Task" from Gradle Projects window in intellij

enter image description here

Solution 18 - Android Studio

On Gradle 5.x I use:

wrapper {
    gradleVersion = '5.5.1'
}

Solution 19 - Android Studio

I have got this error because my app was in a folder that have an Arabic name and I solve it with just changing the Arabic folder name to an English one and it works fine.

So make sure that all the path of your app is written in English.

Solution 20 - Android Studio

I just had this in the OS X and solved as below:

$ gradle wrapper

Now, you can run the build command,

 $ ./gradlew build 

Solution 21 - Android Studio

For Gradle version 5+, this command solved my issue : > gradle wrapper

https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper

Solution 22 - Android Studio

I uninstalled gradle and reinstalled it and then created a new wrapper.

$ sudo apt remove gradle
$ sudo apt-get install gradle
$ gradle wrapper

Solution 23 - Android Studio

Our problem was that the gradle-wrapper.jar file kept getting corrupted by git.

We had to add a .gitattributes file with the line:

*.jar binary

Then remove the jar from git and add it again. Weirdly enough that was only required for one of our repos but not the others.

Solution 24 - Android Studio

  1. from one of your any running project copy the folder of Gradle.
  2. replace it in your current project

then rebuild i hope you will be find working well.

Solution 25 - Android Studio

It also might happen that you lost execution rights on the gradle folder, so

sudo chmod -R +x ./gradle

will help to fix the problem.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSePröblämView Question on Stackoverflow
Solution 1 - Android StudioHankCaView Answer on Stackoverflow
Solution 2 - Android StudioRaGeView Answer on Stackoverflow
Solution 3 - Android StudioniklasingvarView Answer on Stackoverflow
Solution 4 - Android StudioAlex PalmerView Answer on Stackoverflow
Solution 5 - Android StudioyantaqView Answer on Stackoverflow
Solution 6 - Android StudioJose PeralezView Answer on Stackoverflow
Solution 7 - Android StudioLuna KongView Answer on Stackoverflow
Solution 8 - Android StudioNeil WatsonView Answer on Stackoverflow
Solution 9 - Android StudioSanjay BharwaniView Answer on Stackoverflow
Solution 10 - Android StudioAli AkramView Answer on Stackoverflow
Solution 11 - Android StudioGuyView Answer on Stackoverflow
Solution 12 - Android Studiocb2View Answer on Stackoverflow
Solution 13 - Android StudioAlejandro NúñezView Answer on Stackoverflow
Solution 14 - Android Studiouser6408185View Answer on Stackoverflow
Solution 15 - Android StudioNeeKView Answer on Stackoverflow
Solution 16 - Android StudioIhor KhomiakView Answer on Stackoverflow
Solution 17 - Android StudioSaurabhView Answer on Stackoverflow
Solution 18 - Android StudioGuilherme Biff ZarelliView Answer on Stackoverflow
Solution 19 - Android StudioMohamed RedaView Answer on Stackoverflow
Solution 20 - Android StudioArefeView Answer on Stackoverflow
Solution 21 - Android StudioRaymond ChenonView Answer on Stackoverflow
Solution 22 - Android StudioJonathan RView Answer on Stackoverflow
Solution 23 - Android StudioOliver MetzView Answer on Stackoverflow
Solution 24 - Android StudiosherkhanView Answer on Stackoverflow
Solution 25 - Android StudioMartin BraunView Answer on Stackoverflow