Acabei de instalar o 17.10 em uma nova VM. Tentando configurar um ambiente de desenvolvimento, quando executo gradle
ou ./gradlew
recebo o seguinte erro:
* 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
Isso é independente da versão gradle, versão java (tanto openjdk quanto oracle 8 e 9 têm a falha) e versão shadowjar. Isso me leva à conclusão de que é relacionado ao Ubuntu, e não relacionado a gradle/openjdk/oracle.
Tentei atualizar os certificados CA, ambos sudo update-ca-certificates -f
e sudo apt install ca-certificates-java --reinstall
, nenhum dos quais resolve o problema. Eu até voltei para a técnica testada e comprovada de desligar e ligar novamente sem nenhum efeito.
Qual é o problema e como faço para corrigi-lo?
Eu reinstalei tudo usando o apt-get e isso não resolveu o problema.
A solução que encontrei para funcionar: Vá para Oracle e baixe a versão tar.gz do jdk-8. Em seguida, copie o arquivo cacerts para /etc/ssl/certs/java/cacerts
Eu também encontrei esse problema ao tentar configurar a ferramenta de construção scala (sbt) em minha nova instalação 17.10.
Minha solução foi limpar:
(Apenas limpar e reinstalar o jdk não foi suficiente, eu ainda tinha um
java
comando depois disso. Somente limpandojava-common
isso também foi embora e a reinstalação funcionou. Presumo que esteja relacionado aoca-certificates-java*
pacote, que é limpo porjava-common
.)Depois, reinstalei o java novamente (optei apenas pelo openjdk-9):
Isso desencadeou:
Running hooks in /etc/ca-certificates/update.d...
e adicionou muitos arquivos certificados. Agora meu sbt construído foi bem sucedido:Eu reinstalei tudo do zero novamente e esse problema desapareceu. Tudo o que fiz de diferente foi instalar
openjdk-8-jdk
antes de instalar oopenjdk-9-jdk
.Funciona. Existem problemas estranhos de dependência?
Copiei um arquivo /etc/ssl/certs/java/cacerts de um backup de uma instalação mais antiga. Se você tem algo assim, provavelmente é a opção mais fácil. Apenas certifique-se de fazer backup do arquivo cacerts original caso tenha problemas com outros aplicativos.
A Oracle alterou o formato do arquivo cacerts (de JKS para PKCS12).
O JDK padrão incluído no Ubuntu já usa o algoritmo PKCS12; mas provavelmente você está usando um JDK mais antigo que não é capaz de lê-lo.
Eu converti meu arquivo keystore em JKS usando o keytool. É por isso que a solução alternativa para copiar uma mais antiga funciona para outras pessoas e por que sua resposta aceita também funciona.