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?
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
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
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 .
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
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
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.
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
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.
Sur Gradle 5.x, j'utilise:
wrapper {
gradleVersion = '5.5.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".
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.
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
@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.
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.
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
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