No se pudo encontrar ni cargar la clase principal org.gradle.wrapper.GradleWrapperMain

Resuelto SePröbläm asked hace 9 años • 28 respuestas

Limpié todo el proyecto eliminando directorios locales como ~/.gradley ~/.m2 ~./androideligiendo ~/workspace/project/.gradleen File -> Invalidate Caches / Restart...Android Studio. Ahora la ejecución del comando ./gradlewconduce 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?

SePröbläm avatar Apr 23 '15 01:04 SePröbläm
Aceptado

Además de la respuesta de @RaGe, puede estar la situación que enfrenté en la que tuve un git ignore global que ignoraba .jararchivos 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
HankCa avatar Jul 25 '2015 02:07 HankCa

Su contenedor de Gradle falta, está roto o está dañado.

- ¿
Qué es el contenedor Gradle?

gradlewes 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 wrappertarea build.gradlepara 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 gradleen 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 *.jarentrada 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

RaGe avatar Apr 22 '2015 18:04 RaGe