17.10 openjdk i oracle jdk 8 i 9 parametr trustAnchors musi być niepusty

21

Właśnie zainstalowałem 17.10 na nowej maszynie wirtualnej. Próbuję skonfigurować środowisko programistyczne, gdy uruchamiam gradlelub pojawia ./gradlewsię następujący błąd:

* 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

Jest to niezależne od wersji gradle, wersji Java (zarówno openjdk, jak i oracle 8 i 9 mają błąd) i wersji shadowjar. To prowadzi mnie do wniosku, że jest on raczej związany z Ubuntu niż z gradle / openjdk / oracle.

Próbowałem zaktualizować certyfikaty CA, oba, sudo update-ca-certificates -fi sudo apt install ca-certificates-java --reinstallżaden z nich nie rozwiązuje problemu. Wróciłem nawet do wypróbowanej i przetestowanej techniki wyłączania i włączania techniki bez wpływu.

W czym jest problem i jak go naprawić?

amb85
źródło
Mając ten sam problem i odinstalowanie / ponowne zainstalowanie z openjdk-8-jdknie działało dla mnie. Masz pomysł, jak to działa? Uruchomiłem autoremoveprzed instalacją, openjdk-8-jdka potem openjdk-9-jdk, ale to jedyna rzecz, która mogła różnić się od tego, co powiedziałeś.
Andy,
podobnie. Próbowałem wszystkich permutacji wersji 8: jre, jdk i oracle.
0atman

Odpowiedzi:

22

Przeinstalowałem wszystko za pomocą apt-get i to nie rozwiązało problemu.

Rozwiązanie, które znalazłem, działa: przejdź do Oracle i pobierz wersję tar.gz jdk-8. Następnie skopiuj plik cacerts z tego pliku do / etc / ssl / certs / java / cacerts

Tyler Ruppert
źródło
2
Dziwny problem. Dziękujemy za udostępnienie działającego rozwiązania. Skończyłem kopiowanie pliku cacerts z mojego Ubuntu 16.04 z instalacją OpenJDK 8, aby to zadziałało. Co dziwne, cacertszainstalowany z OpenJDK 9 na Ubuntu 17.10 nie wydaje się być pusty (jest większy niż starszy), po prostu nie działa.
JeroenHoek
3
Zamiast kopiować wklejanie starych certyfikatów, możesz także wyczyścić java-commons oraz jdk, a następnie ponownie zainstalować jdk. W ten sposób certyfikaty zostaną odpowiednio zregenerowane.
k0pernikus
1
To jedyne rozwiązanie, które działało dla mnie na Ubuntu 18.04 / OpenJDK 11
zergussino
1
Ponowna instalacja nie działała dla mnie również w systemie Ubuntu 18.04 / OpenJDK 11, więc pobrałem plik jdk-10.0.1_linux-x64_bin.tar.gz. Znajdziesz cacertswjdk-10.0.1/lib/security/cacerts
iGEL
Działa to nawet jeśli kopiowanie z instalacji JDK systemu Windows, czyszczenie i ponowna instalacja nie działały (z Openjdk 8, 9 lub 10), jestem na WSL
FrankMonza
12

Natknąłem się również na ten problem, gdy próbowałem skonfigurować narzędzie do budowania Scala (SBT) w mojej nowej instalacji 17.10.

Moim rozwiązaniem było oczyszczenie:

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

(Samo czyszczenie i ponowne instalowanie jdk nie było wystarczające, nadal miałem javapolecenie. Tylko przez czyszczenie, java-commonktóre również zniknęło , a następnie ponowna instalacja zadziałała. Zakładam, że dotyczy to ca-certificates-java*pakietu, który jest usuwany java-common.)

Następnie ponownie zainstalowałem Javę (zdecydowałem się tylko na openjdk-9):

sudo apt install openjdk-9-jdk

Wywołało to: Running hooks in /etc/ca-certificates/update.d...i dodało wiele plików certyfikatów. Teraz mój sbt zbudowany odniósł sukces:

$ 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
źródło
Dzięki za to - rozwiązałem problem dla mnie. Miałem plik cacerts, który był pusty zgodnie z keytoolem, i oczyszczanie i ponowna instalacja zgodnie z twoją sugestią (w moim przypadku jdk8) to naprawiło.
Brian Smith
Działa to dla mnie z Linux Mint 19 (który miał zainstalowany openjdk-11) i chciałem użyć openjdk-8
James
4

Ponownie zainstalowałem wszystko od zera i ten problem zniknął. Wszystko, co zrobiłem inaczej, to instalacja openjdk-8-jdkprzed instalacją openjdk-9-jdk.

To działa. Czy są jakieś dziwne problemy z zależnością?

amb85
źródło
To również działało dla mnie, ale musiałem zrestartować system. Zasadniczo wykonałem instlal openjdk-9-jdk, a następnie 8. Odinstalowałem oba i ponownie zredagowałem 8 - wtedy - 9. Zawsze też działałem sudo update-ca-certificates -f. To nie był ranek i dzisiaj zacząłem pobierać Oracle JDK. Zanim to się skończyło, odkryłem, że openjdk działa i wyciąganie stopni z powodzeniem.
foxx1337,
2
Musiałem też oczyścić java-common. Zakładam, że problem został nieprawidłowo zainstalowany ca-certificates-java; ten zostaje również usunięty wraz z java commons, a przy ponownej instalacji tworzy kilka plików pem. Instalowanie openjdk-8 nie jest konieczne.
k0pernikus
1

Skopiowałem plik / etc / ssl / certs / java / cacerts z kopii zapasowej starszej instalacji. Jeśli masz coś takiego, jest to prawdopodobnie najłatwiejsza opcja. Po prostu wykonaj kopię zapasową oryginalnego pliku cacerts na wypadek problemów z innymi aplikacjami.

smakks
źródło
1

Oracle zmieniło format pliku cacerts (z JKS na PCKS12), domyślnie dołączony JDK w Ubuntu już używa PCKS12, ale prawdopodobnie używasz starszego JDK, który nie jest w stanie go odczytać. Konwertowałem plik kluczy do JKS za pomocą narzędzia keytool. Właśnie dlatego obejście polegające na skopiowaniu starszego działa dla innych osób i dlaczego zaakceptowana odpowiedź również działa.

Nicolas Mommaerts
źródło