No se pudo encontrar ni cargar la clase principal org.gradle.wrapper.GradleWrapperMain
Limpié todo el proyecto eliminando directorios locales como ~/.gradle
y ~/.m2
~./android
eligiendo ~/workspace/project/.gradle
en File -> Invalidate Caches / Restart...
Android Studio. Ahora la ejecución del comando ./gradlew
conduce al siguiente resultado:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
No hace falta decir que eliminé demasiado, la pregunta es ¿cómo se puede reparar nuevamente? ¿Tiene alguna idea de cómo solucionar este problema?
Además de la respuesta de @RaGe, puede estar la situación que enfrenté en la que tuve un git ignore global que ignoraba .jar
archivos y, por lo tanto, el contenedor contenedor de Gradle nunca se confirmaba. Por lo tanto, recibí ese error en el servidor Jenkins después de intentarlo /var/lib/jenkins/my_project/gradlew build
. Tuve que forzar explícitamente una adición del jar y luego confirmar:
git add -f gradle/wrapper/gradle-wrapper.jar
Su contenedor de Gradle falta, está roto o está dañado.
- ¿
Qué es el contenedor Gradle?
gradlew
es el ejecutable del contenedor de Gradle: script por lotes en Windows y script de shell en otros lugares. Cuando se invoca el script contenedor, descarga la versión de Gradle definida y la ejecuta. Al distribuir el contenedor con su proyecto, cualquiera puede trabajar con él sin necesidad de instalar Gradle de antemano. Aún mejor, los usuarios de la compilación tienen la garantía de utilizar la versión de Gradle para la que se diseñó la compilación.
--
Restaurando el envoltorio de Gradle:
Solía ser que necesitabas agregar una wrapper
tarea build.gradle
para restaurar el contenedor de Gradle y todas sus dependencias. Por ejemplo en build.gradle
:
task wrapper(type: Wrapper) {
gradleVersion = '4.1'
}
O en build.gradle.kts
:
tasks.register<Wrapper>("wrapper") {
gradleVersion = "4.1"
}
Las versiones más nuevas de gradle no requieren esto. Ahora es una tarea incorporada. Solo corre:
gradle wrapper
También puede proporcionar indicadores adicionales para especificar versiones, etc.
gradle wrapper --gradle-version 6.2 --distribution-type all
Cuando ejecuta esta tarea, se agrega un script contenedor de Gradle y los archivos jar necesarios a sus carpetas de origen. Las propiedades se almacenan en gradle/wrapper/gradle-wrapper.properties
(Es posible que necesites instalar gradle localmente para ejecutar esto, brew install gradle
en Mac, por ejemplo. Consulta instrucciones más detalladas aquí ).
-- ¿
Por qué faltaba en primer lugar?
OP parece haber eliminado algo de lo que depende el contenedor Gradle.
Pero una razón común es que una entrada .gitignore impide que los contenedores se registren en git. Tenga en cuenta que el .gitignore vigente puede estar en la carpeta de origen o en una carpeta global en la carpeta de inicio de su usuario o en la configuración global de git. Es común tener una *.jar
entrada en .gitignore.
Puede agregar una excepción para los archivos jar de gradlew en .gitignore
*.jar
!gradle/wrapper/gradle-wrapper.jar
o fuerce la adición del frasco contenedor en git
git add -f gradle/wrapper/gradle-wrapper.jar
--
Ref: Envoltorio Gradle