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