Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Android StudioGradleAndroid Gradle-PluginGradlewAndroid 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
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
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
- from one of your any running project copy the folder of Gradle.
- 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.