17.10 openjdk e oracle jdk 8 e 9, o parâmetro trustAnchors deve estar não vazio

21

Acabei de instalar o 17.10 em uma VM nova. Tentando configurar um ambiente de desenvolvimento, quando executo gradleou ./gradlewrecebo 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, da versão java (openjdk e oracle 8 e 9 têm a falha) e da versão shadowjar. Isso me leva à conclusão de que está relacionado ao Ubuntu, em vez de relacionado ao gradle / openjdk / oracle.

Tentei atualizar os certificados da CA, ambos sudo update-ca-certificates -fe sudo apt install ca-certificates-java --reinstall, nenhum dos quais resolve o problema. Eu até voltei para o experimentado e testado, desligue e ligue novamente a técnica sem afetar.

Qual é o problema e como corrigi-lo?

amb85
fonte
Ter esse mesmo problema e desinstalar / reinstalar com openjdk-8-jdknão funcionou para mim. Alguma idéia de como você conseguiu isso? Eu executei um autoremoveantes da instalação openjdk-8-jdke depois openjdk-9-jdk, mas essa é a única coisa que poderia ter sido diferente do que você disse.
21717 Andy
mesmo. Eu tentei todas as permutações das versões 8: jre, jdk e oracle.
precisa saber é o seguinte

Respostas:

22

Reinstalei tudo usando o apt-get e isso não resolveu o problema.

A solução que achei funcionar: Vá para o Oracle e faça o download da versão tar.gz do jdk-8. Em seguida, copie o arquivo cacerts para / etc / ssl / certs / java / cacerts

Tyler Ruppert
fonte
2
Problema estranho isso. Obrigado por compartilhar sua solução de trabalho. Acabei copiando o arquivo cacerts do meu Ubuntu 16.04 com instalação do OpenJDK 8 para que isso funcionasse. Estranhamente, o cacertsinstalado com o OpenJDK 9 no Ubuntu 17.10 não parece estar vazio (é maior que o anterior), apenas não funciona.
precisa saber é o seguinte
3
Em vez de copiar colar documentos antigos, você também pode limpar o java-commons e o jdk, depois reinstalar um jdk. Dessa forma, os certs serão regenerados adequadamente.
22418 k0pernikus
1
Essa é a única solução que funcionou para mim no Ubuntu 18.04 / OpenJDK 11
zergussino
1
A reinstalação não funcionou para mim no Ubuntu 18.04 / OpenJDK 11, então baixei o jdk-10.0.1_linux-x64_bin.tar.gz. Você encontra o cacertsemjdk-10.0.1/lib/security/cacerts
Igel
Isso funciona mesmo se a cópia de um Windows JDK instalar, limpar e reinstalar não funcionavam (com openjdk 8, 9 ou 10), eu estou em WSL
FrankMonza
12

Também deparei com esse problema ao tentar configurar a ferramenta scala build tool (sbt) na minha nova instalação 17.10.

Minha solução foi limpar:

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

(Apenas limpar e reinstalar o jdk não foi suficiente, eu ainda tinha um javacomando depois disso. Somente removendo java-commonisso também desapareceu e a reinstalação funcionou. Suponho que ele esteja relacionado ao ca-certificates-java*pacote, que é eliminado java-common.)

Depois, reinstalei o java novamente (optei apenas pelo openjdk-9):

sudo apt install openjdk-9-jdk

Isso desencadeou: Running hooks in /etc/ca-certificates/update.d...e adicionou muitos arquivos cert. Agora meu sbt construído foi bem sucedido:

$ 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
fonte
Obrigado por isso - resolveu o problema para mim. Eu tinha um arquivo cacerts que estava vazio de acordo com o keytool e a remoção e reinstalação como você sugeriu (o jdk8 no meu caso) o corrigiu.
Brian Smith
Isso funcionou para mim com o Linux Mint 19 (que tinha openjdk-11 instalado) e eu queria usar openjdk-8
James
4

Eu reinstalei tudo do zero novamente e esse problema desapareceu. Tudo o que fiz de maneira diferente foi instalar openjdk-8-jdkantes da instalação openjdk-9-jdk.

Funciona. Existem problemas de dependência estranhos?

amb85
fonte
Também funcionou para mim, mas tive que reiniciar o sistema. Basicamente, eu executei um instlal de openjdk-9-jdk, então 8. Desinstalei os dois e refiz 8 - depois - 9. Também sempre continuei correndo sudo update-ca-certificates -f. Não era de manhã e hoje comecei a baixar o Oracle JDK. Antes de terminar, descobri os trabalhos do openjdk e o gradle puxa com êxito.
foxx1337
2
Eu também tive que limpar java-common. Presumo que o problema foi instalado incorretamente ca-certificates-java; esse também é removido com java commons e na reinserção cria um monte de arquivos pem. A instalação do openjdk-8 não é necessária.
K0pernikus
1

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.

smakks
fonte
1

O Oracle alterou o formato do arquivo cacerts (de JKS para PCKS12), o JDK padrão incluído no Ubuntu já usa o PCKS12, mas você provavelmente está usando um JDK mais antigo que não é capaz de lê-lo. Eu converti meu arquivo keystore para 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.

Nicolas Mommaerts
fonte