¿JCenter está inactivo permanentemente (31 de octubre)? [duplicate]

9 minutos de lectura

Avatar de usuario de Queen Ellery
reina ellery

Nota del moderador: Esto parece ser una interrupción del servicio. Stack Overflow no puede proporcionar soporte para este problema

   > Failed to list versions for com.google.http-client:google-http-client-android.
         > Unable to load Maven meta-data from https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml.
            > Could not HEAD 'https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml'.
               > Read timed out

Estaba tratando de crear una aplicación para Android, pero obtuve el error anterior. Cuando me conecto a “https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml”, aparece un error nginx 403. ¿JCenter está caído? ¿Qué tengo que hacer?

  • jcenter está abajo. Hay muchos sitios donde se puede comprobar el estado. Uno de ellos es statusgator.com/services/bintray. Todo lo que puede hacer es esperar a que vuelva a estar en funcionamiento.

    – AndroidStud

    31 de octubre a las 3:23

  • Aunque la actualización de jcenter quedó obsoleta en febrero de 2021. hoy hubo un informe de incidente temporal en Gradle. Debido a esto, el problema les había sucedido a los usuarios. He adjuntado el enlace del incidente y el enlace de desaprobación de jcenter aquí. Hacer clic Impacto del cierre de JCenter en las compilaciones de Gradle Hacer clic Problemas de JCenter, informe de incidentes para Gradle

    – Sugana Ganesha Vel

    31 oct a las 8:34


  • Votación para reabrir. El título es posiblemente engañoso; JCenter está inactivo, pero se espera que esto sea permanente. Debido a esto, los usuarios aún necesitarán soluciones alternativas y una discusión saludable sobre las mejores soluciones será valiosa para la comunidad. Tal vez cambiando el nombre de esta pregunta a: “JCentre puede estar inactivo permanentemente. ¿Cuáles son nuestras opciones?” o similar para que quede claro que no es solo un tiempo de inactividad temporal.

    – dKen

    31 oct a las 11:04

  • Si necesita compilar rápidamente mientras clasifica JCenter, siempre puede compilar en el modo fuera de línea de Gradle. gradle --offline build

    –Roy Hinkley

    31 oct a las 13:56

Avatar de usuario de HBB20
HBB20

tldr;

Sí. jcenter está caído ahora mismo. Pero hay una manera de solucionar el problema. jcenter se apagó hace un tiempo y permaneció disponible en modo de solo lectura. Hasta el momento no hay actualizaciones sobre cuándo volverá a estar disponible. Dependiendo de su situación, usted tiene rápida o no tan rapido opciones para ti.


¿Dónde puedo consultar el estado?

actualización: aquí se informa un nuevo incidente. Mira esto.

Como @Adrian mencionó en el comentario, puede verificar el estado del incidente actual en Página de estado de incidentes de Gradle. Actualización: el estado muestra “Resuelto”, pero aún no puedo realizar el proyecto. Así que me pregunto si esa página de estado solo muestra el impacto de jcenter en Gradle Plugin Portal y no en el estado de jcenter en general.

Hasta ahora, no puedo encontrar ningún lugar que informe sobre el estado de la bandeja de basura. Por favor comente abajo si encuentra uno.


¿Qué puedo hacer ahora?

Actualización recomendada:

Ahora que el incidente se resolvió al actualizar gradlePluginPortal para que sirva como jcenter mirror (casi), es muy posible que agregue los siguientes repositorios antes jcenter() debería resolver el problema:

google()
mavenCentral()
gradlePluginPortal() 

Solución temporal:

Alterne el modo fuera de línea de gradle como se muestra a continuación. Esto funcionará para la máquina local, pero no funcionará para CI.

Alternar la opción de modo fuera de línea

Solución robusta:

Siempre es una buena idea alejarse de un servicio obsoleto. La mayoría las bibliotecas activas ahora están alojadas en otros repositorios populares como google repo, Maven Central o gradle plugin repo.

Para agregar esos repositorios en su proyecto, agregue lo siguiente en el bloque de repositorios (es posible que ya los tenga). El orden importa. Asegúrate de ponerlos antes jcenter() esto le dice a Gradle que busque en otros repositorios antes de intentar extraer de jcenter().

Sugerencia: haga una búsqueda global de jcenter() y asegúrese de que cada bloque de repositorio que contiene jcenter() tiene estos otros repositorios.

 repositories {
    ...
    google()
    mavenCentral()
    gradlePluginPortal() 
    jcenter()
    ...
 }

Haga gradle sync y clean build y vea si eso funciona.


¿Eso no funcionó?

No te preocupes (todavía). Esto es común. La solución anterior no funcionará sola en algunas situaciones:

  1. cuando se mueve de jcenter() a otro repositorio (como mavenCentral()), los autores decidieron actualizar el número de versión. Esto simplemente significa que necesita actualizar la versión de esa dependencia para obtenerla de otro repositorio. Busque la biblioteca que aparece como no disponible en el registro de compilación fallida. Encuentre su github o desarrolle documentos para verificar la última versión. Gradle Sync + compilación limpia.

  2. Los repositorios que acabamos de agregar son populares pero no son los únicos. Cuando los autores de la biblioteca tuvieron que cambiar de jcenter a otro lugar, no eligieron uno de estos. En tales casos, consulte la página de github o los documentos de los desarrolladores. Por lo general, los autores colocan el repositorio requerido en esas páginas. Si encuentra que el repositorio no está presente en su proyecto, agréguelo. Gradle Sync + compilación limpia.

    • Tener cuidado: Algunos autores eligieron opciones de repositorio como jitpack.io en gran parte porque era rápido y más fácil que otros. Pero usted debe ser consciente de las preocupaciones con eso. Mélix de gradle resume las preocupaciones con jitpack.io. Debido a posibles problemas de seguridad, recomiendo consultar al equipo y al experto en seguridad antes de agregar eso.
  3. Bueno, ahora es el momento de la pequeña preocupación. Es muy posible que esté utilizando alguna biblioteca que esté en desuso o que ya no se mantenga. Encuentre la página de github de la biblioteca y vea si el autor la declaró obsoleta o ya no se mantiene en el archivo Léame. Incluso puede verificar cuándo se realizó la última confirmación. Si fue hace un tiempo, significa que ya no se mantiene y que al autor no le importó mover la biblioteca de jcenter() a cualquier otro repositorio.

    • Vaya a los problemas de GitHub del repositorio. Alguien debe haber publicado una pregunta sobre el plan para mudarse de jcenter. Si tiene suerte, es posible que alguien haya creado una bifurcación y alojado esa bifurcación en otro lugar. Por ejemplo, yo uso spanny en uno de los proyectos y el autor no lo movió. Gustavo Ross cuidaba suficiente para bifurcar y mover.
    • ¿Nadie bifurcó y se movió? Entonces tienes dos opciones.
      1. Busque una biblioteca activa alternativa que haga lo mismo por usted. Por supuesto, esto lleva mucho tiempo, pero nuevamente es una buena idea alejarse de los recursos obsoletos.
      2. Si no tiene tiempo para integrar una nueva biblioteca o no existe ninguna otra biblioteca, entonces sea el héroe y haga una bifurcación del proyecto GitHub y muévase.
  4. Pero bueno, ¿no recuerdo haber puesto la biblioteca en duda en mi base de código? Esto significa que es una dependencia transitiva (una dependencia de su dependencia directa). Nuevamente verifique, la última versión de su dependencia directa y, con suerte, la nueva versión ha solucionado esto.

¿Cómo comprobar la dependencia directa y transitiva?

  • su registro de compilación fallido tiene la respuesta.

Captura de pantalla anotada del registro de compilación

Con suerte, en este punto ya tienes la compilación funcionando. Si no, entonces espera jcenter volver pronto y comenzar a planear alejarse de él.

  • Página de estado de Gradle también muestra interrupciones relacionadas con JCenter. Recientemente aquí

    – Adrián

    31 oct a las 8:41


  • aquí hay un grep que puede ejecutar en su proyecto que generará todas las ocurrencias de jcenter en su repositorio, puede usar esto como punto de partida para investigar qué bibliotecas podría necesitar actualizar: grep -rnw "jcenter" * > output-file. txt

    – Lakston

    31 oct a las 13:09

Avatar de usuario de Faizal Shap
Shap Faizal

Finalmente, después de horas de golpes en la cabeza, el problema se resolvió. En android/build.gradleagregue lo siguiente en la parte superior de allprojects -> repositories.

se quitará jcenter() de todas las dependencias durante la fase de configuración y reemplazarlo con mavenCentral().

Debería verse algo como esto:

    allprojects {
      repositories {
          all { ArtifactRepository repo ->
              println repo.url.toString()
              if (repo.url.toString().startsWith("https://jcenter.bintray.com/")) {
                  project.logger.warn "Repository ${repo.url} removed."
                  remove repo
                  mavenCentral()
              }
          }
          gradlePluginPortal() // add this if you get further errors 
          ...other repos
      }
    }

Espero eso ayude 🙂

avatar de usuario de honam wong
honam wong

Sí, no estás solo. Jcenter parece caer hoy.

Mi solución es cambiar todo el jCenter a mavenCentral
de root/android/build.gradle

Además, no te olvides de las bibliotecas. node_module/*error libaray*/android/build.gradle

  • mavenCentral no es la alternativa completa a jcenter. Yo sugeriría mantener ambos

    – Mahesh

    31 de octubre a las 6:11

También me encontré con este problema, no estoy muy seguro de por qué jcenter devuelve 403, pero puede solucionar este problema agregando mavenCentral() antes de jcenter() en la configuración de repositorios, así:

    repositories {
        ...
        mavenCentral() // add this line
        jcenter()
        ...
    }

avatar de usuario de cani1see
cani1ver

Creo que mavenCentral no es la alternativa completa a jcenter.
Estoy usando el espejo de aliyun. reemplazar jcenter() con maven { url "https://maven.aliyun.com/repository/jcenter" }.

No sé si es accesible desde fuera de China, si Aliyun censura algunos paquetes o si está actualizado.

guía para reemplazar:

en android/build.gradle

buildscript {
    ...
    repositories {
        ...
-        jcenter()
+       maven { url "https://maven.aliyun.com/repository/jcenter" }
    }
}
allprojects {
+   buildscript {
+       repositories {
+           maven { url "https://maven.aliyun.com/repository/jcenter" }
+       }
+   }
    repositories {
        ...
-       jcenter()
+       maven { url "https://maven.aliyun.com/repository/jcenter" }
    }
}

  • Esto hizo el trabajo para mí. ¿Cuáles son las “cosas que debe saber” y cuáles podrían ser las consecuencias de usar esto?

    – Itay Feldman

    31 oct a las 12:48


  • Esto hizo el trabajo para mí. ¿Cuáles son las “cosas que debe saber” y cuáles podrían ser las consecuencias de usar esto?

    – Itay Feldman

    31 oct a las 12:48


¿Ha sido útil esta solución?