Ist JCenter dauerhaft ausgefallen (31. Okt.)? [duplicate]
Lesezeit: 9 Minuten
Königin Ellery
Anmerkung des Moderators: Dies scheint ein Dienstausfall zu sein. Stack Overflow kann für dieses Problem keine Unterstützung bieten
> 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
Ich habe versucht, eine Android-App zu erstellen, aber ich habe den obigen Fehler erhalten. Wenn ich mich mit „https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml“ verbinde, erscheint ein nginx 403-Fehler. Ist JCenter heruntergefahren? Was soll ich machen?
jcentre ist ausgefallen. Es gibt viele Websites, auf denen Sie den Status überprüfen können. Einer von ihnen ist statusgator.com/services/bintray. Sie können nur warten, bis es wieder funktioniert.
Abstimmung zur Wiedereröffnung. Der Titel ist möglicherweise irreführend; JCenter ist ausgefallen, aber das wird erwartet dauerhaft. Aus diesem Grund benötigen Benutzer immer noch Problemumgehungen, und eine gesunde Diskussion über die besten Lösungen wird für die Community wertvoll sein. Benennen Sie diese Frage vielleicht um in: “JCentre ist möglicherweise dauerhaft ausgefallen. Welche Möglichkeiten haben wir?” oder ähnliches, damit klar ist, dass es sich nicht nur um eine vorübergehende Ausfallzeit handelt.
– dKen
31. Oktober um 11:04 Uhr
Wenn Sie schnell bauen müssen, während Sie JCenter aussortieren, können Sie jederzeit im Offline-Modus von Gradle bauen. gradle --offline build
Ja. jcenter ist gerade down. Aber es gibt eine Möglichkeit, das Problem zu beheben. jcenter war vor einiger Zeit untergegangen und blieb im schreibgeschützten Modus verfügbar. Bisher kein Update, wann es wieder verfügbar sein wird. Abhängig von Ihrer Situation haben Sie schnell oder nicht so schnell Optionen für Sie.
Wie @Adrian im Kommentar erwähnt hat, können Sie den Status des aktuellen Vorfalls überprüfen Statusseite des Vorfalls von Gradle. Update: Der Status zeigt “Gelöst” an, aber ich kann das Projekt immer noch nicht erstellen. Ich frage mich also, ob diese Statusseite nur die Auswirkungen von zeigt jcenter auf Gradle Plugin Portal und nicht Status von jcenter Im Algemeinen.
Bisher kann ich keinen Ort mehr finden, der den Status von bintray meldet. Bitte kommentieren Sie unten, wenn Sie einen finden.
Was kann ich jetzt machen?
Empfohlene Aktualisierung:
Nachdem dieser Vorfall nun behoben wurde, indem gradlePluginPortal so aktualisiert wurde, dass es (fast) als jcenter-Spiegel dient, ist es sehr wahrscheinlich, dass zuvor folgende Repositories hinzugefügt wurden jcenter() sollte das Problem lösen:
google()
mavenCentral()
gradlePluginPortal()
Vorübergehende Lösung:
Schalten Sie den Offline-Modus von Gradle wie unten gezeigt um. Dies funktioniert für den lokalen Computer, aber nicht für CI.
Robuste Lösung:
Es ist immer eine gute Idee, sich von einem veralteten Dienst zu entfernen. Die meisten Aktive Bibliotheken werden jetzt auf anderen beliebten Repositories wie Google Repo, Maven Central oder Gradle Plugin Repo gehostet.
Um diese Repositories zu Ihrem Projekt hinzuzufügen, fügen Sie Folgendes im Repositories-Block hinzu (möglicherweise haben Sie diese bereits). Bestellung zählt. Stellen Sie sicher, dass Sie sie vorher setzen jcenter() Dies weist Gradle an, in andere Repos zu schauen, bevor er versucht, daraus zu ziehen jcenter().
Tipp: Führen Sie eine globale Suche nach durch jcenter() und stellen Sie sicher, dass jeder Repository-Block enthält jcenter() hat diese anderen Repos.
Führen Sie Gradle Sync und Clean Build durch und prüfen Sie, ob das funktioniert.
Das hat nicht funktioniert?
Mach dir (noch) keine Sorgen. Das ist üblich. Die obige Lösung funktioniert in einigen Situationen nicht alleine:
Beim Umzug von jcenter() zu anderen Repo (wie mavenCentral()) entschieden sich die Autoren, die Versionsnummer zu aktualisieren. Dies bedeutet einfach, dass Sie die Version dieser Abhängigkeit aktualisieren müssen, um sie aus einem anderen Repo abzurufen. Suchen Sie nach der Bibliothek, die im Fehlerprotokoll als nicht verfügbar angezeigt wird. Suchen Sie nach der Github- oder Entwicklungsdokumentation, um die neueste Version zu überprüfen. Gradle Sync + sauberer Aufbau.
Die Repositories, die wir gerade hinzugefügt haben, sind beliebt, aber nicht die einzigen. Als Autoren der Bibliothek aus wechseln mussten jcenter woanders hin, sie haben sich keines davon ausgesucht. Überprüfen Sie in solchen Fällen die Github-Seite oder die Entwicklerdokumentation. Normalerweise legen Autoren das erforderliche Repository auf diesen Seiten ab. Wenn Sie feststellen, dass dieses Repository in Ihrem Projekt nicht vorhanden ist, fügen Sie es hinzu. Gradle Sync + sauberer Aufbau.
In acht nehmen: Einige Autoren wählten Repository-Optionen wie jitpack.io vor allem, weil es schneller und einfacher war als andere. Aber Sie sollten sich der Bedenken bewusst sein. Melix von gradle fasst die Bedenken zusammen mit jitpack.io. Aufgrund möglicher Sicherheitsprobleme empfehle ich, das Team und den Sicherheitsexperten zu konsultieren, bevor Sie das hinzufügen.
Nun, jetzt ist es Zeit für kleine Sorgen. Es ist sehr wahrscheinlich, dass Sie eine Bibliothek verwenden, die veraltet ist oder nicht mehr gepflegt wird. Suchen Sie die Github-Seite der Bibliothek und prüfen Sie, ob der Autor sie als veraltet erklärt oder in der Readme-Datei nicht mehr gepflegt hat. Sie können sogar überprüfen, wann es zuletzt festgeschrieben wurde. Wenn es eine Weile her ist, bedeutet dies, dass es nicht mehr gepflegt wird und der Autor die Bibliothek nicht verschieben wollte jcenter() zu jedem anderen Repo.
Gehen Sie zu GitHub-Problemen des Repos. Jemand muss eine Frage bezüglich des Umzugsplans gestellt haben jcenter. Wenn Sie Glück haben, hat vielleicht sogar jemand einen Fork erstellt und diesen Fork woanders gehostet. Ich verwende zum Beispiel spanny in einem der Projekte und Autor hat es nicht verschoben. Gustavo Ross kümmerte sich genug zum Gabeln und Bewegen.
Niemand gegabelt und bewegt? Dann haben Sie zwei Möglichkeiten.
Suchen Sie nach einer alternativen aktiven Bibliothek, die dasselbe für Sie tut. Dies ist natürlich zeitaufwändig, aber auch hier eine gute Idee, sich von veralteten Ressourcen zu entfernen.
Wenn Sie keine Zeit haben, eine neue Bibliothek zu integrieren, oder keine andere Bibliothek vorhanden ist, dann seien Sie der Held und erstellen Sie einen Fork des GitHub-Projekts und ziehen Sie um.
Aber hey, ich kann mich nicht erinnern, die Bibliothek in meiner Codebasis in Frage gestellt zu haben? Dies bedeutet, dass es sich um eine transitive Abhängigkeit handelt (eine Abhängigkeit Ihrer direkten Abhängigkeit). Überprüfen Sie erneut, die neueste Version Ihrer direkten Abhängigkeit, und hoffentlich hat die neue Version dies behoben.
Wie prüft man direkte und transitive Abhängigkeit?
Ihr fehlgeschlagenes Build-Protokoll hat die Antwort.
Hoffentlich haben Sie zu diesem Zeitpunkt den Build zum Laufen gebracht. Wenn nicht, dann hoffen jcenter bald zurückzukommen und zu planen, davon wegzuziehen.
Hier ist ein grep, das Sie in Ihrem Projekt ausführen können und das alle Vorkommen von jcenter in Ihrem Repository ausgibt. Sie können dies als Ausgangspunkt verwenden, um zu untersuchen, welche Bibliotheken Sie möglicherweise aktualisieren müssen: grep -rnw "jcenter" * > output-file. txt
– Lakston
31. Oktober um 13:09 Uhr
Führen Sie diesen Befehl aus, um zu sehen, welche Abhängigkeiten Sie haben, die auf jCenter angewiesen sind, und entfernen oder aktualisieren Sie dann die Abhängigkeiten: shell for FILE in `find . |grep build.gradle`; do echo $FILE; cat $FILE |grep jcenter; done Quelle: github-bezogenes Problem
– louiechristie
gestern
Faizal Shap
Endlich, nach stundenlangem Headbangen, Problem gelöst. Im android/build.gradlefügen Sie Folgendes oben ein allprojects -> repositories.
Es wird entfernt jcenter() aus allen Abhängigkeiten während der Konfigurationsphase entfernen und durch ersetzen mavenCentral().
Es sollte etwa so aussehen:
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
}
}
Ich hoffe es hilft 🙂
honam wong
Ja, du bist nicht allein. Jcenter scheint heute down zu sein.
Meine Lösung ist, alle zu ändern jCenter zu mavenCentral
aus root/android/build.gradle
Vergessen Sie auch nicht die Bibliotheken node_module/*error libaray*/android/build.gradle
mavenCentral ist keine vollständige Alternative zu jcenter. Ich würde vorschlagen, beides zu behalten
– Mahesh
31. Oktober um 6:11 Uhr
@Mahesh Vielen Dank für die Informationen. Ich werde sie jetzt beide behalten
– honam wong
6. November um 5:40 Uhr
Ich treffe auch auf dieses Problem, ich bin mir nicht ganz sicher, warum jcenter 403 zurückgibt, aber Sie können dieses Problem beheben, indem Sie hinzufügen mavenCentral() Vor jcenter() in der Repositories-Einstellung wie folgt:
repositories {
...
mavenCentral() // add this line
jcenter()
...
}
kanni1sehen
Ich denke, mavenCentral ist nicht die vollständige Alternative zu jcenter.
Ich benutze Aliyuns Spiegel. ersetzen jcenter() mit maven { url "https://maven.aliyun.com/repository/jcenter" }.
Ich weiß nicht, ob es von außerhalb Chinas zugänglich ist, oder ob Aliyun einige Pakete zensiert oder ob es auf dem neuesten Stand ist.
jcentre ist ausgefallen. Es gibt viele Websites, auf denen Sie den Status überprüfen können. Einer von ihnen ist statusgator.com/services/bintray. Sie können nur warten, bis es wieder funktioniert.
– androidStud
31. Oktober um 3:23
Obwohl die Einstellung des jcenter-Updates im Februar 2021 erfolgte. heute gab es einen Zwischenfallbericht in Gradle. Aus diesem Grund war das Problem bei den Benutzern aufgetreten. Ich habe den Incident-Link und den jcenter-Verwerfungslink hier angehängt. Klicken Auswirkung des Herunterfahrens von JCenter auf Gradle-Builds Klicken JCenter-Probleme, Vorfallbericht für Gradle
– Sugana Ganesha Vel
31. Oktober um 8:34 Uhr
Abstimmung zur Wiedereröffnung. Der Titel ist möglicherweise irreführend; JCenter ist ausgefallen, aber das wird erwartet dauerhaft. Aus diesem Grund benötigen Benutzer immer noch Problemumgehungen, und eine gesunde Diskussion über die besten Lösungen wird für die Community wertvoll sein. Benennen Sie diese Frage vielleicht um in: “JCentre ist möglicherweise dauerhaft ausgefallen. Welche Möglichkeiten haben wir?” oder ähnliches, damit klar ist, dass es sich nicht nur um eine vorübergehende Ausfallzeit handelt.
– dKen
31. Oktober um 11:04 Uhr
Wenn Sie schnell bauen müssen, während Sie JCenter aussortieren, können Sie jederzeit im Offline-Modus von Gradle bauen.
gradle --offline build
– Roy Hinkley
31. Oktober um 13:56 Uhr