Ich habe gerade 17.10 in einer neuen VM installiert. Beim Versuch, eine Entwicklungsumgebung einzurichten, wird beim Ausführen gradle
oder beim ./gradlew
Anzeigen der folgenden Fehlermeldung Folgendes angezeigt:
* What went wrong:
Error resolving plugin [id: 'com.github.johnrengelman.shadow', version: '2.0.0']
> Could not GET 'https://plugins.gradle.org/api/gradle/4.0/plugin/use/com.github.johnrengelman.shadow/2.0.0'.
> java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Dies ist unabhängig von der Gradle-Version, der Java-Version (sowohl openjdk als auch Oracle 8 und 9 haben den Fehler) und der Shadowjar-Version. Dies führt mich zu dem Schluss, dass es sich eher um Ubuntu als um gradle / openjdk / oracle handelt.
Ich habe versucht, die CA-Zertifikate sowohl sudo update-ca-certificates -f
als auch zu aktualisieren. Beides sudo apt install ca-certificates-java --reinstall
behebt das Problem nicht. Ich habe sogar auf die bewährte Technik zurückgegriffen, bei der das Ein- und Ausschalten ohne Auswirkungen blieb.
Was ist das Problem und wie behebe ich es?
openjdk-8-jdk
hat bei mir nicht funktioniert. Hast du eine Idee, wie du das hinbekommst? Ich habe eineautoremove
vor der Installation ausgeführtopenjdk-8-jdk
und dannopenjdk-9-jdk
, aber das ist das einzige, was anders hätte sein können als das, was Sie gesagt haben.Antworten:
Ich habe alles mit apt-get neu installiert und das hat das Problem nicht gelöst.
Die Lösung, die ich gefunden habe, funktioniert: Gehen Sie zu Oracle und laden Sie die tar.gz-Version von jdk-8 herunter. Kopieren Sie dann die cacerts-Datei von dort nach / etc / ssl / certs / java / cacerts
quelle
cacerts
scheint das mit OpenJDK 9 auf Ubuntu 17.10 installierte nicht leer zu sein (es ist größer als das ältere), es funktioniert einfach nicht.jdk-10.0.1_linux-x64_bin.tar.gz
. Sie finden dencacerts
injdk-10.0.1/lib/security/cacerts
Ich bin auch auf dieses Problem gestoßen, als ich versucht habe, das Scala Build Tool (sbt) für meine neue 17.10-Installation einzurichten.
Meine Lösung war zu spülen:
(Nur das Löschen und Neuinstallieren des JDK war nicht genug, ich hatte danach immer noch einen
java
Befehl. Nur durch Löschenjava-common
ging das auch weg und dann funktionierte die Neuinstallation. Ich gehe davon ausca-certificates-java*
, dass es sich um das Paket handelt, das von gelöscht wirdjava-common
.)Danach habe ich Java erneut neu installiert (ich habe mich nur für openjdk-9 entschieden):
Dies löste
Running hooks in /etc/ca-certificates/update.d...
Folgendes aus : und fügte viele Zertifikatsdateien hinzu. Jetzt wurde mein sbt erfolgreich gebaut:quelle
Ich habe alles von Grund auf neu installiert und dieses Problem ist verschwunden. Alles was ich anders gemacht habe war installieren
openjdk-8-jdk
vor der Installationopenjdk-9-jdk
.Es klappt. Gibt es irgendwelche seltsamen Abhängigkeitsprobleme?
quelle
openjdk-9-jdk
dann 8 durchgeführt. Ich habe beide deinstalliert und 8 - dann - 9 erneut korrigiert. Ich habe auch immer weitergearbeitetsudo update-ca-certificates -f
. Es war kein Morgen und heute habe ich begonnen, Oracle JDK herunterzuladen. Bevor es fertig war, entdeckte ich, dass openjdk funktioniert und gradle erfolgreich zieht.java-common
. Ich gehe davon aus, dass das Problem falsch installiert wurdeca-certificates-java
; Dieser wird auch mit Java Commons entfernt und erzeugt bei der Neuinstallation eine Reihe von PEM-Dateien. Die Installation von openjdk-8 ist nicht erforderlich.Ich habe eine / etc / ssl / certs / java / cacerts-Datei von einem Backup einer älteren Installation kopiert. Wenn Sie so etwas haben, ist es wahrscheinlich die einfachste Option. Stellen Sie einfach sicher, dass Sie die ursprüngliche cacerts-Datei sichern, falls Sie Probleme mit anderen Anwendungen haben.
quelle
Oracle hat das Format der cacerts-Datei geändert (von JKS auf PCKS12). Das in Ubuntu standardmäßig enthaltene JDK verwendet das PCKS12 bereits, aber Sie verwenden wahrscheinlich ein älteres JDK, das es nicht lesen kann. Ich habe meine Keystore-Datei mit dem Keytool in JKS konvertiert. Das ist der Grund, warum die Problemumgehung zum Kopieren einer älteren für andere funktioniert und warum Ihre akzeptierte Antwort ebenfalls funktioniert.
quelle