Impossible de trouver ou de charger la classe principale org.gradle.wrapper.GradleWrapperMain

J'ai nettoyé tout le projet en supprimant les répertoires locaux comme ~/.gradle, ~/.m2 ~./android et ~/workspace/project/.gradle et en choisissant File -> Invalidate Caches / Restart... Dans Android Studio. Maintenant, l'exécution de la commande ./gradlew conduit à la sortie suivante:

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

Inutile de dire que j'ai trop supprimé, la question Est de savoir comment peut-elle être réparée à nouveau? Avez-vous une idée de comment résoudre ce problème?

92
demandé sur RaGe 2015-04-22 21:06:20

12 réponses

gradlew est le script exécutable - batch du wrapper gradle sur Windows et le script shell ailleurs. Si vous incluez les lignes suivantes dans votre build.gradle,

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

Un script wrapper gradle est ajouté à vos dossiers source. Le script wrapper lorsqu'il est appelé, télécharge la version de gradle définie et l'exécute. En distribuant le wrapper avec votre projet, n'importe qui peut travailler avec lui sans avoir besoin d'installer Gradle au préalable. Mieux encore, les utilisateurs de la version sont garantis d'utiliser la version de Gradle que la construction a été conçue pour fonctionner avec.

Dans vos suppressions, vous avez supprimé quelque chose dont gradlew dépend. Vous pouvez soit extraire uniquement les fichiers gradlew de votre dépôt source, soit, si gradle est installé, exécuter gradle wrapper pour le restaurer.

Ref: Wrapper Gradle

69
répondu RaGe 2015-04-22 18:45:37

En plus de la réponse de @RaGe peut être la situation à laquelle j'ai fait face où j'avais un git ignore global qui ignorait les fichiers .jar et donc le jar wrapper gradle n'a jamais été commis. Ainsi, je recevais cette erreur sur le serveur Jenkins après une tentative /var/lib/jenkins/my_project/gradlew build. J'ai dû forcer explicitement un ajout du pot, puis valider:

git add -f gradle/wrapper/gradle-wrapper.jar
130
répondu HankCa 2015-07-25 02:58:47

Dans mon cas, c'était un mondial .gitignore, comme l'explique @HankCa la réponse de.

Au lieu d'ajouter de force le jar, que vous devrez vous rappeler de faire dans chaque projet Gradle, j'ai ajouté une substitution pour inclure à nouveau le jar wrapper dans mon global .gitignore:

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

Cela m'est utile car j'ai beaucoup de projets qui utilisent Gradle; Git va maintenant me rappeler d'inclure le jar wrapper.

Ce remplacement fonctionnera tant qu'aucun répertoire au-dessus de gradle-wrapper.jar (tel que gradle et wrapper) ne le sera ignored -- git ne descendra pas dans les répertoires ignorés pour des raisons de performances .

20
répondu Alex Palmer 2017-07-04 13:51:31

Dans mon cas, j'ai omis le sous-dossier wrapper lors de la copie du dossier gradle et j'ai eu la même erreur.

Impossible de trouver ou de charger la classe principale org.gradle.wrapper.GradleWrapperMain

Assurez-vous que vous avez la structure de dossier correcte Si vous copiez wrapper à partir d'un autre emplacement.

├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
9
répondu yantaq 2017-11-30 23:11:19

Ce qui a fonctionné pour moi, c'est d'abord courir:

 gradle wrapper

Après une construction réussie, j'ai pu exécuter

./gradlew assembleRelease

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

7
répondu niklasingvar 2017-06-27 13:53:47

Vous pouvez également copier le gradlew.bat dans votre dossier racine et copiez le gradlew-wrapper dans le dossier gradlew.

C'est du travail pour moi.

4
répondu Guy 2016-05-03 02:07:43

Il vous manque probablement le fichier gradle-wrapper.jar sous le répertoire gradle/wrapper dans votre projet.

, Vous devez générer ce fichier via ce script dans la construction.fichier gradle comme ci-dessous,

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

Et exécutez la tâche:

gradle wrapper

Avec gradle 2.4 (ou supérieur), vous pouvez configurer un wrapper sans ajouter de tâche dédiée:

gradle wrapper --gradle-version 2.3

Ou

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

Tous les détails peuvent être trouvés ce lien

4
répondu Luna Kong 2018-09-27 08:35:27

Dans mon cas (en utilisant windows 10) gradlew.bat a les lignes de code suivantes dans:

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

La variable APP_HOME est essentiellement un dossier racine gradles pour le projet, donc, si cela est foiré d'une manière ou d'une autre, vous allez obtenir:

Erreur: Impossible de trouver ou de charger la classe principale org.gradle.wrapper.GradleWrapperMain

Pour moi, cela avait été foiré parce que ma structure de dossier de projet avait une esperluette ( & ) dedans. Par Exemple C:\Test&Dev\MyProject

Donc, gradel j'essayais de trouver le gradle-wrapper.fichier jar dans un dossier racine de C:\Test (enlever tout après et y compris le'&')

J'ai trouvé cela en ajoutant la ligne suivante sous la ligne set APP_HOME = % DIRNAME % ci-dessus. Puis a couru le fichier bat pour voir le résultat.

echo "%APP_HOME%"

Il y aura quelques autres 'caractères spéciaux' qui pourraient casser un chemin/répertoire.

3
répondu Neil Watson 2016-11-04 19:29:39

@HankCa a également résolu le problème dans mon cas. J'ai décidé de changer mes **/*.jar ignores dangereux à ceux explicites comme src/**/lib/*.jar pour éviter de tels problèmes à l'avenir. Ignore commençant par * * / * sont un peu trop dangereux, au moins pour moi. Et c'est toujours une bonne idée d'obtenir l'idée .gitignore ligne juste en le regardant.

1
répondu 2016-09-21 09:49:59

Dans mon cas gradle-wrapper.jar a été corrompu après avoir remplacé un tas de fichiers. Revenir à l'original a résolu le problème.

1
répondu NeeK 2017-12-06 09:42:59

J'ai corrigé ce problème avec le correctif suivant (peut-être que cela aidera quelqu'un):

Vérifiez simplement si les dossiers parents de votre dossier de projet ont des noms avec des espaces ou d'autres caractères interdits. Si oui - supprimer.

"C:\Users\someuser\Test Projects\testProj" - dans ce cas, "projets de Test" devrait être "TestProjects".

0
répondu Ihor Khomiak 2018-03-26 15:23:31

Dans mon cas, j'avais supprimé les dossiers gradlew et gradle du projet. Rediriger les tâches de construction propres via "Run Gradle Task" à partir de la fenêtre Projets Gradle dans intellij

entrez la description de l'image ici

0
répondu Saurabh 2018-05-06 12:45:15