17.10 openjdk und oracle jdk 8 und 9 Der Parameter trustAnchors darf nicht leer sein

21

Ich habe gerade 17.10 in einer neuen VM installiert. Beim Versuch, eine Entwicklungsumgebung einzurichten, wird beim Ausführen gradleoder beim ./gradlewAnzeigen 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 -fals auch zu aktualisieren. Beides sudo apt install ca-certificates-java --reinstallbehebt 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?

amb85
quelle
Das gleiche Problem zu haben und die Deinstallation / Neuinstallation mit openjdk-8-jdkhat bei mir nicht funktioniert. Hast du eine Idee, wie du das hinbekommst? Ich habe eine autoremovevor der Installation ausgeführt openjdk-8-jdkund dann openjdk-9-jdk, aber das ist das einzige, was anders hätte sein können als das, was Sie gesagt haben.
Andy
gleich. Ich habe alle Permutationen von 8 ausprobiert: jre-, jdk- und oracle-Versionen.
0atman

Antworten:

22

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

Tyler Ruppert
quelle
2
Seltsame Ausgabe dieses. Vielen Dank, dass Sie Ihre funktionierende Lösung geteilt haben. Am Ende habe ich die cacerts-Datei von meinem Ubuntu 16.04 mit OpenJDK 8-Installation kopiert, damit dies funktioniert. Seltsamerweise cacertsscheint das mit OpenJDK 9 auf Ubuntu 17.10 installierte nicht leer zu sein (es ist größer als das ältere), es funktioniert einfach nicht.
JeroenHoek
3
Anstatt alte Zertifikate einzufügen, können Sie auch Java-Commons sowie das JDK löschen und anschließend ein JDK neu installieren. Auf diese Weise werden die Zertifikate ordnungsgemäß regeneriert.
k0pernikus
1
Das ist die einzige Lösung, die für mich unter Ubuntu 18.04 / OpenJDK 11
zergussino
1
Neuinstallation funktionierte bei mir auch nicht unter Ubuntu 18.04 / OpenJDK 11, daher habe ich die heruntergeladen jdk-10.0.1_linux-x64_bin.tar.gz. Sie finden den cacertsinjdk-10.0.1/lib/security/cacerts
iGEL
Dies funktioniert auch, wenn das Kopieren von einer Windows JDK-Installation, Reinigung und Neuinstallation nicht funktioniert hat (mit openjdk 8, 9 oder 10). Ich bin auf der WSL
FrankMonza
12

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:

sudo apt purge openjdk-9-jdk openjdk-8-jdk java-common

(Nur das Löschen und Neuinstallieren des JDK war nicht genug, ich hatte danach immer noch einen javaBefehl. Nur durch Löschenjava-common ging das auch weg und dann funktionierte die Neuinstallation. Ich gehe davon aus ca-certificates-java*, dass es sich um das Paket handelt, das von gelöscht wird java-common.)

Danach habe ich Java erneut neu installiert (ich habe mich nur für openjdk-9 entschieden):

sudo apt install openjdk-9-jdk

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:

$ sbt
Getting org.scala-sbt sbt 1.1.0  (this may take some time)...
downloading https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.1.0/sbt-1.1.0.jar ...
    [SUCCESSFUL ] org.scala-sbt#sbt;1.1.0!sbt.jar (657ms)
downloading https://repo1.maven.org/maven2/org/scala-sbt/main_2.12/1.1.0/main_2.12-1.1.0.jar
...  
k0pernikus
quelle
Danke dafür - habe das Problem für mich gelöst. Ich hatte eine Cacerts-Datei, die laut Keytool leer war, und löschte und installierte sie neu, wie Sie vorgeschlagen hatten (in meinem Fall jdk8).
Brian Smith
Dies funktionierte für mich mit Linux Mint 19 (auf dem openjdk-11 installiert war) und ich wollte openjdk-8
James
4

Ich habe alles von Grund auf neu installiert und dieses Problem ist verschwunden. Alles was ich anders gemacht habe war installierenopenjdk-8-jdk vor der Installation openjdk-9-jdk.

Es klappt. Gibt es irgendwelche seltsamen Abhängigkeitsprobleme?

amb85
quelle
Es hat auch bei mir funktioniert, aber ich musste das System neu starten. Grundsätzlich habe ich eine Installation von openjdk-9-jdkdann 8 durchgeführt. Ich habe beide deinstalliert und 8 - dann - 9 erneut korrigiert. Ich habe auch immer weitergearbeitet sudo 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.
Foxx1337
2
Ich musste auch spülen java-common. Ich gehe davon aus, dass das Problem falsch installiert wurde ca-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.
k0pernikus
1

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.

schmunzelt
quelle
1

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.

Nicolas Mommaerts
quelle