Не удалось найти или загрузить основной класс org.gradle.wrapper.GradleWrapperMain

Я очистил весь проект, удалив локальные каталоги, такие как ~/.gradle, ~/.m2 ~./android и ~/workspace/project/.gradle и выбрав File -> Invalidate Caches / Restart... в Android Studio. Теперь выполнение команды ./gradlew приводит к следующему выводу:

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

Излишне говорить, что я слишком много удалил, вопрос в том, как его можно снова восстановить? У вас есть идеи, как это исправить?

Ответ 1

gradlew - исполняемый файл обертки gradle - пакетный скрипт для windows и скрипт оболочки в другом месте. Если вы включите следующие строки в свой build.gradle,

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

скрипт обертки добавлен в ваши исходные папки. Сценарий оболочки при запуске загружает определенную версию Gradle и выполняет ее. Распространяя упаковку с вашим проектом, любой может работать с ним без предварительной установки Gradle. Более того, пользователи сборки гарантированно используют версию Gradle, с которой была рассчитана сборка.

При удалении вы удалили что-то, от чего зависит gradlew. Вы можете извлечь только файлы gradlew из исходного репозитория или, если у вас установлен gradle, запустить gradle wrapper, чтобы восстановить его.

ref: Gradle Wrapper

Ответ 2

В дополнение к ответу @RaGe может возникнуть ситуация, с которой я столкнулся, когда у меня было глобальное игнорирование git, которое игнорировало файлы .jar, и поэтому баннер оболочки gradle никогда не выполнялся. Таким образом, я получил эту ошибку на сервере Jenkins после попытки /var/lib/jenkins/my_project/gradlew build. Я должен был явно принудительно добавить банку, а затем зафиксировать:

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

Ответ 3

В моем случае это был глобальный .gitignore, как объясняется в ответе @HankCa.

Вместо принудительного добавления jar файла, который вам нужно помнить в каждом проекте Gradle, я добавил переопределение для повторного включения jar-оболочки в мой глобальный .gitignore:

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

Это полезно для меня, так как у меня есть много проектов, которые используют Gradle; Git теперь напомнит мне включить банку с оберткой.

Это переопределение будет работать до тех пор, пока никакие каталоги выше gradle-wrapper.jar (такие как gradle и wrapper) не игнорируются - git не будет gradle в игнорируемые каталоги по соображениям производительности.

Ответ 4

Для меня сработало первое выполнение:

 gradle wrapper

После успешной сборки я смог запустить

./gradlew assembleRelease

Примечание. Чтобы запустить gradle wrapper, сначала запустите brew install gradle. Если установка прошла успешно, запустите gradle wrapper из корня проекта.

Источник и спасибо: http://gradle.org/docs/current/userguide/gradle_wrapper.html и https://stackoverflow.com/users/745574/rage

Ответ 5

В моем случае я оставил wrapper вспомогательную папку при копировании папки gradle и получил ту же ошибку.

Не удалось найти или загрузить основной класс org.gradle.wrapper.GradleWrapperMain

убедитесь, что у вас есть правильная структура папок, если вы копируете оболочку из другого места.

├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

Ответ 6

Возможно, вам не хватает gradle-wrapper.jar в каталоге gradle/wrapper в вашем проекте.

Вам нужно создать этот файл с помощью этого скрипта в файле build.gradle, как показано ниже,

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

и запустите задачу:

gradle wrapper

С Gradle 2.4 (или выше) вы можете установить оболочку, не добавляя выделенную задачу:

gradle wrapper --gradle-version 2.3

ИЛИ ЖЕ

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

Все подробности можно найти по этой ссылке

Ответ 7

вы также можете скопировать файл gradlew.bat в корневую папку и скопировать оболочку gradlew-wrapper в папку gradlew.

которые работают для меня.

Ответ 8

В моем случае (с использованием окон 10) gradlew.bat имеет следующие строки кода в:

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

Переменная APP_HOME - это, по сути, корневая папка с градиентом для проекта, поэтому, если это будет испорчено каким-то образом, вы получите:

Ошибка: не удалось найти или загрузить основной класс org.gradle.wrapper.GradleWrapperMain

Для меня это было испорчено, потому что в моей структуре папок проекта был амперсанд (&). Например, C:\Test & Dev\MyProject

Итак, gradel пытался найти файл gradle -wrapper.jar в корневой папке C:\Test (отменив все после и включив "&" )

Я нашел это, добавив следующую строку ниже установленной строки APP_HOME =% DIRNAME% выше. Затем запустил файл bat, чтобы увидеть результат.

echo "%APP_HOME%"

Появится еще несколько "специальных символов", которые могут сломать путь/каталог.

Ответ 9

Я следовал за ответами сверху, когда столкнулся с этим. И если у вас возникла эта проблема, убедитесь, что принудительно отправили файлы jar и properties. После этих двух я перестал получать эту проблему.

git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties

Ответ 10

@HankCa решила проблему и в моем случае. Я решил изменить мои опасные **/*.jar игнорирования на понятные, такие как src/**/lib/*.jar, чтобы избежать таких проблем в будущем. Игнорирование, начинающееся с **/*, является слишком опасным, по крайней мере для меня. И это всегда хорошая идея, чтобы завести идею за строку .gitignore, просто взглянув на нее.

Ответ 11

В моем случае gradle -wrapper.jar поврежден после замены кучи файлов. Возврат к исходному решению проблемы.

Ответ 12

Я исправил эту проблему следующим исправлением (возможно, это кому-нибудь поможет):

Просто проверьте, есть ли в родительских папках папки вашего проекта имена с пробелами или другими запрещенными символами. Если да - убери это.

"C:\Users\someuser\Test Projects\testProj" - в этом случае "Test Projects" должно быть "TestProjects".

Ответ 13

Я видел ту же ошибку, но в моем случае это была новая установка Git без LFS. Рассматриваемый репозиторий был настроен с LFS, а файл gradle-wrapper.jar был в LFS, поэтому он содержал только указатель на сервер LFS. Решение было простым, просто запустите:

git lfs install

И свежий клон сделал свое дело. Я полагаю, что git lfs pull или просто git pull тоже могли бы помочь, но человек с проблемой решил вместо этого сделать новый клон.

Ответ 14

На Gradle 5.x я использую:

wrapper {
    gradleVersion = '5.5.1'
}

Ответ 15

В моем случае я удалил папки gradlew и gradle из проекта. Перезапустите задачи чистой сборки через "Выполнить задачу Gradle" из окна Gradle Projects в intellij.

enter image description here

Ответ 17

если это новый проект, удалите существующую папку и запустите $ npm install [CN00 ]act-native-cli

проверьте, что работает без ошибок

Ответ 18

Я установил git lfs на свою машину и снова клонировал репозиторий, затем он заработал.

Ответ 19

При аналогичных обстоятельствах на нашем сервере сборки я заблокировал все файлы jar в своем файле .gitignore, и gradle/wrapper/gradle-wrapper.jar не был отправлен на сервер сборки. Возможно, стоит проверить, есть ли эта банка и является ли она правильной.