17.10 openjdk y oracle jdk 8 y 9 el parámetro trustAnchors no debe estar vacío

21

Acabo de instalar 17.10 en una VM nueva. Intento configurar un entorno de desarrollo cuando ejecuto gradleo aparece ./gradlewel siguiente error:

* 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

Esto es independiente de la versión gradle, la versión java (tanto openjdk como Oracle 8 y 9 tienen la falla) y la versión shadowjar. Esto me lleva a la conclusión de que está relacionado con Ubuntu en lugar de estar relacionado con gradle / openjdk / oracle.

He intentado actualizar los certificados de CA, ambos sudo update-ca-certificates -fy sudo apt install ca-certificates-java --reinstallninguno de los dos resuelve el problema. Incluso volví a la técnica probada y comprobada, apáguelo y enciéndalo nuevamente sin ningún efecto.

¿Cuál es el problema y cómo lo soluciono?

amb85
fuente
Al tener este mismo problema, y ​​la desinstalación / reinstalación con openjdk-8-jdkno funcionó para mí. ¿Alguna idea de cómo funciona esto? Ejecuté un autoremoveantes de instalar openjdk-8-jdky luego openjdk-9-jdk, pero eso es lo único que podría haber sido diferente de lo que dijiste.
Andy
mismo. He intentado todas las permutaciones de 8: versiones jre, jdk y oracle.
0atman

Respuestas:

22

Reinstalé todo usando apt-get y eso no resolvió el problema.

La solución que encontré funciona: vaya a Oracle y descargue la versión tar.gz de jdk-8. Luego copie el archivo cacerts de eso en / etc / ssl / certs / java / cacerts

Tyler Ruppert
fuente
2
Problema extraño esto. Gracias por compartir su solución de trabajo. Terminé copiando el archivo cacerts de mi Ubuntu 16.04 con la instalación de OpenJDK 8 para que esto funcione. Curiosamente, el cacertsinstalado con OpenJDK 9 en Ubuntu 17.10 no parece estar vacío (es más grande que el anterior), simplemente no funciona.
JeroenHoek
3
En lugar de copiar y pegar certs antiguos, también puede purgar java-commons y jdk, luego reinstalar un jdk. De esa manera, los certificados se regenerarán correctamente.
k0pernikus
1
Esa es la única solución que funcionó para mí en Ubuntu 18.04 / OpenJDK 11
zergussino
1
La reinstalación tampoco funcionó para mí en Ubuntu 18.04 / OpenJDK 11, así que descargué el jdk-10.0.1_linux-x64_bin.tar.gz. A encontrar el cacertsenjdk-10.0.1/lib/security/cacerts
Igel
Esto funciona incluso si la copia desde una instalación de Windows JDK, la limpieza y la reinstalación no funcionaron (con openjdk 8, 9 o 10), estoy en WSL
FrankMonza
12

También me encontré con este problema al intentar configurar la herramienta de compilación scala (sbt) en mi nueva instalación 17.10.

Mi solución fue purgar:

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

(Solo purgar y reinstalar el jdk no fue suficiente, aún tenía un javacomando después de eso. Solo al purgar java-commoneso también desapareció y luego la reinstalación funcionó. Supongo que se relaciona con el ca-certificates-java*paquete, que se purga java-common).

Luego, reinstalé java nuevamente (opté solo por openjdk-9):

sudo apt install openjdk-9-jdk

Esto desencadenó: Running hooks in /etc/ca-certificates/update.d...y agregó muchos archivos cert. Ahora mi sbt construido fue exitoso:

$ 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
fuente
Gracias por esto, resolvió el problema para mí. Tenía un archivo cacerts que estaba vacío de acuerdo con la herramienta de claves, y la purga y la reinstalación como sugirió (jdk8 en mi caso) lo arregló.
Brian Smith
Esto funcionó para mí con Linux Mint 19 (que tenía instalado openjdk-11) y quería usar openjdk-8
James
4

He reinstalado todo desde cero nuevamente y este problema ha desaparecido. Todo lo que hice diferente fue instalar openjdk-8-jdkantes de instalar openjdk-9-jdk.

Funciona. ¿Hay algún problema de dependencia extraño?

amb85
fuente
También funcionó para mí, pero tuve que reiniciar el sistema. Básicamente realicé un instlal de openjdk-9-jdk, luego 8. Desinstalé ambos y lo volví a hacer 8 - luego - 9. También siempre seguí corriendo sudo update-ca-certificates -f. No era de mañana y hoy comencé a descargar Oracle JDK. Antes de que terminara descubrí que OpenJDK funciona y Gradle tira con éxito.
foxx1337
2
También tuve que purgar java-common. Supongo que el problema se instaló incorrectamente ca-certificates-java; ese se elimina también con java commons y en la reinsallación crea un montón de archivos pem. No es necesario instalar openjdk-8.
k0pernikus
1

Copié un archivo / etc / ssl / certs / java / cacerts de una copia de seguridad de una instalación anterior. Si tienes algo así, probablemente sea la opción más fácil. Solo asegúrese de hacer una copia de seguridad del archivo cacerts original en caso de que tenga problemas con otras aplicaciones.

Smakks
fuente
1

Oracle cambió el formato del archivo cacerts (de JKS a PCKS12), el JDK incluido por defecto en Ubuntu ya usa el PCKS12, pero probablemente esté usando un JDK anterior que no puede leerlo. Convertí mi archivo de almacén de claves a JKS usando la herramienta de claves. Es por eso que la solución alternativa para copiar una anterior funciona para otras personas, y por qué su respuesta aceptada también funciona.

Nicolas Mommaerts
fuente