Не удалось найти или загрузить основной класс org.градля.обертка.GradleWrapperMain
я очистил весь проект, удалив локальные каталоги, такие как ~/.gradle
, ~/.m2
~./android
и ~/workspace/project/.gradle
и chosing File -> Invalidate Caches / Restart...
в Android Studio.
Теперь выполнение команды ./gradlew
приводит к следующему выводу:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Излишне говорить, что я удалил слишком много, вопрос в том, как его можно восстановить снова? У вас есть идеи, как это исправить?
12 ответов
gradlew
- это исполняемый пакетный сценарий оболочки gradle в windows и сценарий оболочки в другом месте. Если вы включаете следующие строки в свой build.gradle
,
task wrapper(type: Wrapper) {
gradleVersion = '2.0'
}
сценарий оболочки gradle добавляется в исходные папки. Сценарий-оболочка при вызове загружает определенную версию gradle и выполняет ее. Распространяя обертку с вашим проектом, любой может работать с ней без необходимости устанавливать Gradle заранее. Еще лучше, пользователи сборки гарантированно используйте версию Gradle, для которой была разработана сборка.
в ваших удалениях вы удалили то, от чего зависит gradlew. Вы можете либо вытащить только файлы gradlew из исходного репо, либо если у вас установлен gradle run gradle wrapper
восстановить его.
ref:Gradle Wrapper
В дополнение к ответу @RaGe может быть ситуация, с которой я столкнулся, когда у меня был глобальный git ignore, который игнорировал .jar
файлы, и поэтому Банка обертки gradle никогда не была зафиксирована. Таким образом, я получал эту ошибку на сервере Jenkins после попытки /var/lib/jenkins/my_project/gradlew build
. Мне пришлось явно принудительно добавить банку, а затем совершить:
git add -f gradle/wrapper/gradle-wrapper.jar
в моем случае это был глобальный .gitignore
, как объяснено в ответе @HankCa.
вместо того, чтобы насильственно добавлять банку, которую вам нужно будет помнить в каждом проекте Gradle, я добавил переопределение, чтобы повторно включить банку обертки в мой глобальный .gitignore
:
*.jar
!gradle/wrapper/gradle-wrapper.jar
это полезно для меня, поскольку у меня есть много проектов, которые используют Gradle; Git теперь напомнит мне включить банку обертки.
это переопределение будет работать до тех пор, пока нет каталогов выше gradle-wrapper.jar
(например,gradle
и wrapper
) игнорируются -- git не будет спускаться в игнорируемые каталоги по соображениям производительности.
в моем случае я пропустил фантик подпапка при копировании ш и получил ту же ошибку.
не удалось найти или загрузить основной класс org.градля.обертка.GradleWrapperMain
убедитесь, что у вас есть правильная структура папок, если вы копируете обертку из другого места.
├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle
то, что сработало для меня, - это первый запуск:
gradle wrapper
после успешной сборки я смог запустить
./gradlew assembleRelease
источник и спасибо:http://gradle.org/docs/current/userguide/gradle_wrapper.html и https://stackoverflow.com/users/745574/rage
вы также можете скопировать gradlew.bat в корневую папку и скопируйте gradlew-wrapper в папку gradlew.
Это работа для меня.
вы, вероятно, отсутствует в каталоге 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
все подробности можно найти этой ссылке
в моем случае (с использованием windows 10) gradlew.летучая мышь имеет следующий код:
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
переменная APP_HOME по существу является корневой папкой gradles для проекта, поэтому, если это каким-то образом испортится, вы получите:
ошибка: не удалось найти или загрузить главный класс орг.градля.обертка.GradleWrapperMain
для меня это было испорчено, потому что в моей структуре папок проекта был амперсанд ( & ). Например C:\Test&Dev\MyProject
Так, Градель пытается найти Gradle в-фантик.файл jar в корневой папке C:\Test (снимая все после и включая'&')
Я нашел это, добавив следующую строку ниже строки set APP_HOME=%DIRNAME% выше. Затем запустите файл bat, чтобы увидеть результат.
echo "%APP_HOME%"
будет несколько других "специальных символов", которые могут сломать путь/каталог.
@HankCa решил проблему и в моем случае. Я решил изменить свой опасный **/*.jar
игнорирует самоочевидные, такие как src/**/lib/*.jar
чтобы избежать таких проблем в будущем. Игнорирование, начинающееся с**/*, слишком опасно, по крайней мере для меня. И это всегда хорошая идея, чтобы получить идея .gitignore row просто глядя на него.
в моем случае gradle-wrapper.jar был поврежден после замены кучи файлов. Возвращение к первоначальному разрешило проблему.
я исправил эту проблему со следующим исправлением (возможно, это поможет кому-то):
просто проверьте, имеют ли родительские папки вашей папки проекта Имена с пробелами или другими запрещенными символами. Если да - удалите его.
"C:\Users\someuser\Test Projects\testProj" - в этом случае "тестовые проекты" должны быть "TestProjects".
в моем случае я удалил папки gradlew и gradle из проекта. Reran очистить задачи сборки через "запустить задачу Gradle" из окна проектов Gradle в intellij