17.10 openjdk et oracle jdk 8 et 9 le paramètre trustAnchors doit être non vide

21

Je viens d'installer 17.10 sur une nouvelle machine virtuelle. Essayer de configurer un environnement de développement, lorsque j'exécute gradleou ./gradlewque j'obtiens l'erreur suivante:

* 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

C'est indépendamment de la version gradle, de la version java (openjdk et oracle 8 et 9 ont le défaut) et de la version shadowjar. Cela m'amène à la conclusion que c'est lié à Ubuntu plutôt qu'à gradle / openjdk / oracle.

J'ai essayé de mettre à jour les certificats CA, les deux sudo update-ca-certificates -fet sudo apt install ca-certificates-java --reinstall, aucun d'eux ne résout le problème. Je suis même revenu à la technique éprouvée de l'éteindre et de la rallumer sans aucun effet.

Quel est le problème et comment le résoudre?

amb85
la source
Ayant ce même problème, et la désinstallation / réinstallation avec openjdk-8-jdkn'a pas fonctionné pour moi. Une idée de comment vous avez fait fonctionner ça? J'ai exécuté un autoremoveavant l'installation openjdk-8-jdkpuis openjdk-9-jdk, mais c'est la seule chose qui aurait pu être différente de ce que vous avez dit.
Andy
même. J'ai essayé toutes les permutations de 8: versions jre, jdk et oracle.
0atman

Réponses:

22

J'ai réinstallé tout en utilisant apt-get et cela n'a pas résolu le problème.

La solution que j'ai trouvée fonctionne: allez sur Oracle et téléchargez la version tar.gz de jdk-8. Copiez ensuite le fichier cacerts depuis celui-ci dans / etc / ssl / certs / java / cacerts

Tyler Ruppert
la source
2
Problème bizarre. Merci de partager votre solution de travail. J'ai fini par copier le fichier cacerts de mon installation Ubuntu 16.04 avec OpenJDK 8 pour que cela fonctionne. Curieusement, le cacertsinstallé avec OpenJDK 9 sur Ubuntu 17.10 ne semble pas être vide (il est plus grand que l'ancien), il ne fonctionne tout simplement pas.
JeroenHoek
3
Au lieu de copier-coller d'anciens certificats, vous pouvez également purger java-commons ainsi que le jdk, puis réinstaller un jdk. De cette façon, les certificats seront correctement régénérés.
k0pernikus
1
C'est la seule solution qui a fonctionné pour moi sur Ubuntu 18.04 / OpenJDK 11
zergussino
1
La réinstallation n'a pas fonctionné pour moi non plus sur Ubuntu 18.04 / OpenJDK 11, j'ai donc téléchargé le jdk-10.0.1_linux-x64_bin.tar.gz. Vous trouvez le cacertsdansjdk-10.0.1/lib/security/cacerts
Igel
Cela fonctionne même si la copie à partir d'une installation, d'un nettoyage et d'une réinstallation de Windows JDK n'a pas fonctionné (avec openjdk 8, 9 ou 10), je suis sur WSL
FrankMonza
12

J'ai également rencontré ce problème lors de la tentative de configuration de l'outil de création de scala (sbt) sur ma nouvelle installation 17.10.

Ma solution était de purger:

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

(Il ne suffisait pas de purger et de réinstaller le jdk, j'avais encore une javacommande après cela. Seulement en purgeant java-commoncela a également disparu, puis la réinstallation a fonctionné. Je suppose que cela concerne le ca-certificates-java*package, qui est purgé par java-common.)

Ensuite, j'ai réinstallé java (j'ai opté uniquement pour openjdk-9):

sudo apt install openjdk-9-jdk

Cela a déclenché: Running hooks in /etc/ca-certificates/update.d...et ajouté beaucoup de fichiers cert. Maintenant, mon sbt construit a réussi:

$ 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
la source
Merci pour cela - a résolu le problème pour moi. J'avais un fichier cacerts qui était vide selon le keytool, et la purge et la réinstallation comme vous l'avez suggéré (jdk8 dans mon cas) l'ont corrigé.
Brian Smith
Cela a fonctionné pour moi avec Linux Mint 19 (sur lequel openjdk-11 était installé) et je voulais utiliser openjdk-8
James
4

J'ai tout réinstallé à partir de zéro et ce problème a disparu. Tout ce que j'ai fait différemment était d'installer openjdk-8-jdkavant d'installer openjdk-9-jdk.

Ça marche. Y a-t-il des problèmes de dépendance étranges?

amb85
la source
Cela a également fonctionné pour moi, mais j'ai dû redémarrer le système. Fondamentalement, j'ai effectué une installation de openjdk-9-jdk, puis 8. J'ai désinstallé les deux et l'ai refait 8 - puis - 9. J'ai également toujours continué à fonctionner sudo update-ca-certificates -f. Ce n'était pas le matin et aujourd'hui j'ai commencé à télécharger Oracle JDK. Avant de terminer, j'ai découvert avec succès les travaux openjdk et les tirages gradle.
foxx1337
2
J'ai aussi dû purger java-common. Je suppose que le problème était mal installé ca-certificates-java; celui-ci est également supprimé avec java commons et lors de la réinsertion, il crée un tas de fichiers pem. L'installation d'openjdk-8 n'est pas nécessaire.
k0pernikus
1

J'ai copié un fichier / etc / ssl / certs / java / cacerts à partir d'une sauvegarde d'une ancienne installation. Si vous avez quelque chose comme ça, c'est probablement l'option la plus simple. Assurez-vous simplement de sauvegarder le fichier cacerts d'origine au cas où vous rencontriez des problèmes avec d'autres applications.

smakks
la source
1

Oracle a changé le format du fichier cacerts (de JKS à PCKS12), le JDK inclus par défaut dans Ubuntu utilise déjà le PCKS12, mais vous utilisez probablement un JDK plus ancien qui ne peut pas le lire. J'ai converti mon fichier de clés en JKS en utilisant le keytool. C'est pourquoi la solution de contournement pour copier un ancien fonctionne pour d'autres personnes, et pourquoi votre réponse acceptée fonctionne également.

Nicolas Mommaerts
la source