Не удалось найти или загрузить организацию основного класса.градля.обертка.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 92

12 ответов:

gradlew - это исполняемый пакетный скрипт gradle wrapper в 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 wrapper jar никогда не фиксировался. Таким образом, я получал эту ошибку на сервере Дженкинса после попытки /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 не будет опускаться в игнорируемые каталоги по соображениям производительности.

в моем случае, я пропустил фантик подпапка при копировании gradle и получил ту же ошибку.

не удается найти или загрузить главный класс 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-обертку в папку gradlew.

Это работа для меня.

вы, вероятно, отсутствует 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

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

в моем случае (с помощью 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-обертка.jar был поврежден после замены кучи файлов. Возврат к исходному разрешил проблему.

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

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

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

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

enter image description here