J'ai nettoyé l'ensemble du 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-il être réparé à nouveau? Avez-vous des idées pour résoudre ce problème?
gradle wrapper
nouveau pour régénérer le code manquant ... cela suppose que vous n'avez aucune configuration de contrôle de source.Réponses:
Votre wrapper Gradle est manquant, cassé ou corrompu.
Qu'est-ce que le wrapper gradle:
gradlew
est l'exécutable du wrapper gradle - script batch sur Windows et script shell ailleurs. 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 à installer Gradle au préalable. Mieux encore, les utilisateurs de la build ont la garantie d'utiliser la version de Gradle avec laquelle la build a été conçue pour fonctionner.Restauration du wrapper gradle: Auparavant,
vous deviez ajouter une
wrapper
tâche à votre build.gradle pour restaurer le wrapper gradle et toutes ses dépendances. Par exemple:Les nouvelles versions de gradle n'en ont pas besoin. C'est maintenant une tâche intégrée. Exécutez simplement:
Vous pouvez également fournir des indicateurs supplémentaires pour spécifier les versions, etc.
Lorsque vous exécutez cette tâche, un script d'encapsuleur gradle et les fichiers jar requis sont ajoutés à vos dossiers source. Les propriétés sont stockées dans gradle / wrapper / gradle-wrapper.properties
(Vous devrez peut-être installer gradle localement pour l'exécuter.
brew install gradle
Sur mac par exemple. Consultez des instructions plus détaillées ici )Pourquoi manquait-il en premier lieu?
OP semble avoir supprimé quelque chose dont le wrapper gradle dépend.
Mais une raison courante est qu'une entrée .gitignore empêche les jars wrapper d'être vérifiés dans git. Notez que le .gitignore en vigueur peut être dans le dossier source, ou un fichier global dans votre dossier de base utilisateur ou dans la configuration globale git. Il est courant d'avoir une
*.jar
entrée dans .gitignore.Vous pouvez ajouter une exception pour les fichiers jar de gradlew dans .gitignore
ou forcez l'ajout du jar wrapper dans git
réf: Gradle Wrapper
la source
En plus de la réponse de @ RaGe, il y a peut-être la situation à laquelle j'ai été confrontée où j'ai eu un git ignore global qui ignorait les
.jar
fichiers et donc le jar du wrapper gradle n'était jamais validé. Ainsi, j'obtenais cette erreur sur le serveur Jenkins après une tentative/var/lib/jenkins/my_project/gradlew build
. J'ai dû explicitement forcer un ajout du fichier jar puis commettre:la source
Ce qui a fonctionné pour moi, c'est de commencer par courir:
Après une construction réussie, j'ai pu courir
Source et merci: http://gradle.org/docs/current/userguide/gradle_wrapper.html et https://stackoverflow.com/users/745574/rage
la source
Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Dans mon cas, c'était un global
.gitignore
, comme expliqué dans la réponse de @ HankCa .Au lieu d'ajouter de force le jar, ce que vous devrez vous rappeler de faire dans chaque projet Gradle, j'ai ajouté un remplacement pour ré-inclure le jar wrapper dans mon global
.gitignore
:Cela m'est utile car j'ai de nombreux projets qui utilisent Gradle; Git va maintenant me rappeler d'inclure le jar wrapper.
Ce remplacement fonctionnera tant qu'aucun répertoire ci-dessus
gradle-wrapper.jar
(tel quegradle
etwrapper
) n'est ignoré - git ne descendra pas dans les répertoires ignorés pour des raisons de performances .la source
Dans mon cas, j'ai laissé de côté le wrappersous-dossier lors de la copie du gradledossier et j'ai eu la même erreur.
Impossible de trouver ou de charger la classe principale org.gradle.wrapper.GradleWrapperMain
assurez-vous d'avoir la bonne structure de dossiers si vous copiez l'encapsuleur à partir d'un autre emplacement.
la source
gradle wrapper
vous donnera exactement le même résultat;)Il vous manque probablement un
gradle-wrapper.jar
fichier sous le répertoiregradle/wrapper
de votre projet.Vous devez générer ce fichier via ce script dans le fichier build.gradle comme ci-dessous,
et exécutez la tâche:
Avec gradle 2.4 (ou supérieur), vous pouvez configurer un wrapper sans ajouter de tâche dédiée:
OU
Tous les détails se trouvent sur ce lien
la source
gradle/wrapper
dir. Cela peut être résolu en exécutant legralde wrapper
comme vous l'avez indiqué.Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
vous pouvez également copier le gradlew.bat dans votre dossier racine et copier le gradlew-wrapper dans le dossier gradlew.
c'est du travail pour moi.
la source
J'ai suivi les réponses d'en haut quand je suis tombé sur ça. Et si vous rencontrez ce problème, assurez-vous de forcer le transfert des fichiers jar et de propriétés. Après ces deux, j'ai arrêté de recevoir ce problème.
la source
Dans mon cas (en utilisant Windows 10), gradlew.bat contient les lignes de code suivantes:
La variable APP_HOME est essentiellement le dossier racine des gradles pour le projet, donc, si cela est gâché d'une manière ou d'une autre, vous obtiendrez:
Pour moi, cela avait été gâché parce que la structure de mon dossier de projet contenait une esperluette (&). Par exemple, C: \ Test & Dev \ MyProject
Ainsi, gradel essayait de trouver le fichier gradle-wrapper.jar dans un dossier racine de C: \ Test (en supprimant 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. Ensuite, exécutez le fichier bat pour voir le résultat.
Il y aura quelques autres «caractères spéciaux» qui pourraient casser un chemin / répertoire.
la source
J'ai vu la même erreur mais dans mon cas, il s'agissait d'une nouvelle installation de Git sans LFS installé. Le dépôt en question a été configuré avec LFS et le gradle-wrapper.jar était dans LFS, il ne contenait donc qu'un pointeur vers le serveur LFS. La solution était simple, il suffit d'exécuter:
Et un clone frais a fait l'affaire. Je suppose que
git lfs pull
ou juste ungit pull
aurait pu aider aussi mais la personne avec le problème a décidé de faire un nouveau clone à la place.la source
@HankCa a également résolu le problème dans mon cas. J'ai décidé de changer mes
**/*.jar
ignores dangereux en des ignorants explicites, commesrc/**/lib/*.jar
pour éviter de tels problèmes à l'avenir. Ignorer commençant par ** / * est un peu trop dangereux, du moins pour moi. Et c'est toujours une bonne idée d'obtenir l'idée derrière une ligne .gitignore simplement en la regardant.la source
Dans mon cas, gradle-wrapper.jar a été corrompu après avoir remplacé un tas de fichiers. Le retour à l'original a résolu le problème.
la source
J'ai résolu ce problème avec le prochain correctif (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, supprimez-le.
"C: \ Users \ someuser \ Test Projects \ testProj" - dans ce cas, "Test Projects" doit être "TestProjects".
la source
Sur Gradle 5.x j'utilise:
la source
Dans mon cas, j'avais supprimé les dossiers gradlew et gradle du projet. Reran nettoyer les tâches de construction via "Exécuter la tâche Gradle" de la fenêtre Projets Gradle dans intellij
la source
Pour Gradle version 5+, cette commande a résolu mon problème:
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
la source
s'il s'agit d'un nouveau projet, supprimez le dossier existant et exécutez $ npm install -g react-native-cli
vérifier qui fonctionne sans aucune erreur
la source