Не удалось найти или загрузить основной класс 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]()
Ответ 16
Для версии Gradle 5+ эта команда решила мою проблему:
gradle обертка
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
Ответ 17
если это новый проект, удалите существующую папку и запустите $ npm install [CN00 ]act-native-cli
проверьте, что работает без ошибок
Ответ 18
Я установил git lfs на свою машину и снова клонировал репозиторий, затем он заработал.
Ответ 19
При аналогичных обстоятельствах на нашем сервере сборки я заблокировал все файлы jar в своем файле .gitignore, и gradle/wrapper/gradle-wrapper.jar не был отправлен на сервер сборки. Возможно, стоит проверить, есть ли эта банка и является ли она правильной.