Właśnie zainstalowałem 17.10 na nowej maszynie wirtualnej. Próbuję skonfigurować środowisko programistyczne, gdy uruchamiam gradle
lub pojawia ./gradlew
się 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 -f
i 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ć?
openjdk-8-jdk
nie działało dla mnie. Masz pomysł, jak to działa? Uruchomiłemautoremove
przed instalacją,openjdk-8-jdk
a potemopenjdk-9-jdk
, ale to jedyna rzecz, która mogła różnić się od tego, co powiedziałeś.Odpowiedzi:
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
źródło
cacerts
zainstalowany z OpenJDK 9 na Ubuntu 17.10 nie wydaje się być pusty (jest większy niż starszy), po prostu nie działa.jdk-10.0.1_linux-x64_bin.tar.gz
. Znajdzieszcacerts
wjdk-10.0.1/lib/security/cacerts
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:
(Samo czyszczenie i ponowne instalowanie jdk nie było wystarczające, nadal miałem
java
polecenie. Tylko przez czyszczenie,java-common
które również zniknęło , a następnie ponowna instalacja zadziałała. Zakładam, że dotyczy toca-certificates-java*
pakietu, który jest usuwanyjava-common
.)Następnie ponownie zainstalowałem Javę (zdecydowałem się tylko na openjdk-9):
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:źródło
Ponownie zainstalowałem wszystko od zera i ten problem zniknął. Wszystko, co zrobiłem inaczej, to instalacja
openjdk-8-jdk
przed instalacjąopenjdk-9-jdk
.To działa. Czy są jakieś dziwne problemy z zależnością?
źródło
openjdk-9-jdk
, a następnie 8. Odinstalowałem oba i ponownie zredagowałem 8 - wtedy - 9. Zawsze też działałemsudo 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.java-common
. Zakładam, że problem został nieprawidłowo zainstalowanyca-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.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.
źródło
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.
źródło