web-dev-qa-db-fra.com

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

J'ai nettoyé l'ensemble du projet en supprimant les répertoires locaux tels que ~/.gradle, ~/.m2~./Android et ~/workspace/project/.gradle et en choisissant File -> Invalidate Caches / Restart... dans Android Studio . 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 le réparer à nouveau. Avez-vous des idées pour résoudre ce problème? 

103
SePröbläm

gradlew est l'exécutable du wrapper Gradle - script de traitement par lots sous Windows et script Shell ailleurs. Si vous incluez les lignes suivantes dans votre build.gradle

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

un script d'emballage de niveau est ajouté à vos dossiers source. Le script wrapper, lorsqu'il est appelé, télécharge la version de dégradé définie et l'exécute. En distribuant le wrapper avec votre projet, tout le monde peut le manipuler sans avoir à installer Gradle au préalable. Mieux encore, il est garanti que les utilisateurs de la version utilisent la version de Gradle avec laquelle la version a été conçue.

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

ref: Gradle Wrapper

78
RaGe

En plus de la réponse de @RaGe, il se peut que je sois confronté à une situation où j’avais un git ignore qui ignorait les fichiers .jar et que l’objet Gradle wrapper n’était jamais validé. Ainsi, je recevais cette erreur sur le serveur Jenkins après une tentative de /var/lib/jenkins/my_project/gradlew build. Je devais forcer explicitement l'ajout du bocal puis commettre:

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

Dans mon cas, il s'agissait d'un .gitignore global, comme expliqué dans la réponse de @ HankCa .

Au lieu d’ajouter de force le fichier jar, ce que vous ne devez pas oublier de faire dans chaque projet Gradle, j’ai ajouté un remplacement afin de ré-inclure le fichier wrapper dans mon .gitignore global:

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

Cela m'est utile, car de nombreux projets utilisent Gradle. Git va maintenant me rappeler d'inclure le pot d'emballage.

Cette substitution fonctionnera tant que aucun répertoire au-dessus de gradle-wrapper.jar (tel que gradle et wrapper) ne sera ignoré - git ne descendra pas dans des répertoires ignorés pour des raisons de performances .

25
Alex Palmer

Dans mon cas, j'ai laissé de côté wrapper sous-dossier pendant la copie gradle dossier et a la même erreur.

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

assurez-vous de disposer de la structure de dossiers appropriée si vous copiez le wrapper depuis un autre emplacement.

 ├── build.gradle 
 Gradle 
 │ └── wrapper 
 Gradle-wrapper.jar 
 └── gradle-wrapper.properties 
 Gradelw 
 Gradlew.bat 
 Settings.gradle 
15
yantaq

Ce qui a fonctionné pour moi, c'est de courir en premier:

 gradle wrapper

Après avoir réussi à construire, j'ai pu exécuter 

./gradlew assembleRelease

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

10
niklasingvar

vous pouvez également copier le fichier gradlew.bat dans votre dossier racine et copier le fichier gradlew-wrapper dans le dossier gradlew.

c'est un travail pour moi.

4
Guy

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

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

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

et exécuter 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

OR

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
Luna Kong

Dans mon cas (avec Windows 10), gradlew.bat a les lignes de code suivantes:

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

La variable APP_HOME est essentiellement le dossier racine du projet. Par conséquent, si vous rencontrez des problèmes, vous obtiendrez ce qui suit:

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

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 ce qui se trouvait après et en incluant le "&").

J'ai trouvé cela en ajoutant la ligne suivante sous l'ensemble APP_HOME =% DIRNAME% ci-dessus. Puis 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
Neil Watson

Sur Gradle 5.x, j'utilise:

wrapper {
    gradleVersion = '5.5.1'
}
1

J'ai résolu ce problème avec le prochain correctif (cela aidera peut-être quelqu'un):

Il suffit de vérifier 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:\Utilisateurs\utilisateur\Projets de test\testProj" - dans ce cas, "Projets de test" doit être "TestProjects".

1
Ihor Khomiak

Dans mon cas, gradle-wrapper.jar a été corrompu après avoir remplacé plusieurs fichiers. Le retour à l’original a résolu le problème.

1
NeeK

J'ai suivi les réponses ci-dessus quand je suis tombé dessus. Et si vous rencontrez ce problème, assurez-vous de forcer la compression des fichiers jar et des fichiers de propriétés. Après ces deux, j'ai cessé de recevoir ce problème.

git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties
1
Jose Peralez

@HankCa a également résolu le problème dans mon cas. J'ai décidé de changer mon dangereux **/*.jar pour l'ignorer par des explicites comme src/**/lib/*.jar afin d'éviter de tels problèmes à l'avenir. Ignorer à partir de **/* est un peu trop dangereux, du moins pour moi. Et c'est toujours une bonne idée de se faire une idée derrière une ligne .gitignore juste en la regardant.

1
user6408185

J'ai vu la même erreur, mais dans mon cas, il s'agissait d'une nouvelle installation de Git sans LFS installé. Le référentiel en question a été configuré avec LFS et le fichier gradle-wrapper.jar était dans LFS. Il ne contenait donc qu'un pointeur sur le serveur LFS. La solution était simple, il suffit de lancer:

git lfs install

Et un nouveau clone a fait l'affaire. Je suppose que git lfs pull ou juste un git pull aurait également pu aider, mais la personne ayant le problème a décidé de créer un nouveau clone à la place.

0
cb2

s'il s'agit d'un nouveau projet, supprimez le dossier existant et exécutez $ npm install -g react-native-cli

vérifier que fonctionne sans erreur

0
vineet

Dans mon cas, j’avais supprimé les dossiers gradlew et gradle du projet . Redémarrez les tâches de génération propre dans "Exécuter Gradle Task" de la fenêtre Projets Gradle dans intellij 

 enter image description here

0
Saurabh

Pour Gradle version 5+, cette commande a résolu mon problème:

emballage de grade

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

0
Raymond Chenon