android-studio - tools - gradle wrapper
No se pudo encontrar o cargar la clase principal org.gradle.wrapper.GradleWrapperMain (17)
@HankCa resolvió el problema en mi caso también.
Decidí cambiar mi peligroso
**/*.jar
ignora a uno que se explica por sí mismo como
src/**/lib/*.jar
para evitar tales problemas en el futuro.
Ignorar si comienza con ** / * es un poco demasiado peligroso, al menos para mí.
Y siempre es una buena idea tener la idea detrás de una fila .gitignore con solo mirarla.
Limpié todo el proyecto eliminando directorios locales como
~/.gradle
,
~/.m2
~./android
y
~/workspace/project/.gradle
y seleccionando
File -> Invalidate Caches / Restart...
en Android Studio.
Ahora la ejecución del comando
./gradlew
conduce a la siguiente salida:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
No hace falta decir que borré demasiado, la pregunta es ¿cómo se puede reparar nuevamente? ¿Tienes alguna idea de cómo solucionar esto?
Además de la respuesta de @ RaGe, puede ser la situación que enfrenté cuando tuve un ignorante global que ignoraba los archivos
.jar
y, por lo tanto, el contenedor de envoltura de gradle nunca se comprometió.
Por lo tanto, recibí ese error en el servidor Jenkins después de un intento de
/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
En Gradle 5.x yo uso:
wrapper {
gradleVersion = ''5.5.1''
}
En mi caso (usando Windows 10) gradlew.bat tiene las siguientes líneas de código en:
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
La variable APP_HOME es esencialmente una carpeta raíz graduada para el proyecto, por lo tanto, si esto se complica de alguna manera, obtendrá:
Error: no se pudo encontrar o cargar la clase principal org.gradle.wrapper.GradleWrapperMain
Para mí, esto había estado en mal estado porque la estructura de la carpeta de mi proyecto tenía un ampersand (&). Por ejemplo, C: / Test & Dev / MyProject
Entonces, Gradel estaba tratando de encontrar el archivo gradle-wrapper.jar en una carpeta raíz de C: / Test (quitando todo después e incluyendo el ''&'')
Encontré esto al agregar la siguiente línea debajo de la línea de APP_HOME =% DIRNAME% establecida arriba. Luego ejecutó el archivo bat para ver el resultado.
echo "%APP_HOME%"
Habrá algunos otros ''caracteres especiales'' que podrían romper una ruta / directorio.
En mi caso, omití la subcarpeta del contenedor mientras copiaba la carpeta gradle y obtuve el mismo error.
No se pudo encontrar o cargar la clase principal org.gradle.wrapper.GradleWrapperMain
asegúrese de tener la estructura de carpetas correcta si copia el contenedor desde otra ubicación.
├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle
En mi caso, era un
.gitignore
global,
como se explica en la respuesta de @ HankCa
.
En lugar de agregar el jar de forma forzada, lo que deberá recordar hacer en cada proyecto de Gradle, agregué una anulación para volver a incluir el contenedor de contenedor en mi
.gitignore
global:
*.jar
!gradle/wrapper/gradle-wrapper.jar
Esto es útil para mí, ya que tengo muchos proyectos que usan Gradle; Git ahora me recordará que incluya el tarro de envoltura.
Esta anulación funcionará siempre que no se
gradle-wrapper.jar
directorios superiores a
gradle-wrapper.jar
(como
gradle
y
wrapper
);
git no descenderá a los directorios ignorados por razones de rendimiento
.
En mi caso, gradle-wrapper.jar se corrompió después de reemplazar un montón de archivos. Volviendo al original resolvió el problema.
Lo que funcionó para mí es correr primero:
gradle wrapper
Después de una compilación exitosa pude ejecutar
./gradlew assembleRelease
Nota: Para poder ejecutar
gradle wrapper
primero ejecutebrew install gradle
. Si la instalación se realiza correctamente, ejecutegradle wrapper
desde la raíz del proyecto.
Fuente y agradecimientos: http://gradle.org/docs/current/userguide/gradle_wrapper.html y
Para Gradle versión 5+, este comando resolvió mi problema:
envoltura de gradle
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
Probablemente le falte el archivo
gradle-wrapper.jar
en el directorio
gradle/wrapper
en su proyecto.
Debe generar este archivo a través de este script en el archivo build.gradle como se muestra a continuación,
task wrapper(type: Wrapper) {
gradleVersion = ''2.0'' // version required
}
y ejecutar tarea:
gradle wrapper
Con Gradle 2.4 (o superior) puede configurar un contenedor sin agregar una tarea dedicada:
gradle wrapper --gradle-version 2.3
O
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip
Todos los detalles se pueden encontrar en este enlace
Seguí las respuestas de arriba cuando me encontré con esto. Y si tiene este problema, asegúrese de forzar la inserción de los archivos jar y de propiedades. Después de estos dos, dejé de tener este problema.
git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties
Solucioné este problema con la próxima solución (tal vez ayude a alguien):
Simplemente verifique si las carpetas principales de la carpeta de su proyecto tienen nombres con espacios u otros caracteres prohibidos. En caso afirmativo, quítelo.
"C: / Users / someuser / Test Projects / testProj" - en este caso, "Test Projects" debería ser "TestProjects".
Vi el mismo error, pero en mi caso fue una instalación nueva de Git sin LFS instalado. El repositorio en cuestión se configuró con LFS y gradle-wrapper.jar estaba en LFS, por lo que solo contenía un puntero al servidor LFS. La solución era simple, solo ejecuta:
git lfs install
Y un clon nuevo hizo el truco.
Supongo que
git lfs pull
o simplemente un
git pull
podrían haber ayudado, pero la persona con el problema decidió hacer un clon nuevo.
si es un proyecto nuevo, elimine la carpeta existente y ejecute $ npm install -g react-native-cli
compruebe que se ejecuta sin ningún error
también puede copiar gradlew.bat en su carpeta raíz y copiar el gradlew-wrapper en la carpeta gradlew.
Eso es trabajo para mí.
gradlew
es el ejecutable de gradle wrapper: secuencia de comandos por lotes en Windows y secuencia de comandos de shell en otros lugares.
Si incluye las siguientes líneas en su
build.gradle
,
task wrapper(type: Wrapper) {
gradleVersion = ''2.0''
}
se agrega un script de envoltura de gradle a sus carpetas de origen. Cuando se invoca el script de contenedor, descarga la versión 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 garantizado el uso de la versión de Gradle para la que fue diseñada.
En sus eliminaciones, eliminó algo de lo que depende gradlew.
Puede extraer solo los archivos gradlew de su repositorio de origen, o si tiene instalado
gradle wrapper
ejecute
gradle wrapper
para restaurarlo.
ref: Gradle Wrapper