17.10 openjdk и oracle jdk 8 и 9 параметр trustAnchors должен быть не пустым

Я только что установил 17.10 в новой виртуальной машине. Попытка настроить среду разработки, когда я запускаю gradle или же ./gradlew Я получаю следующую ошибку:

* 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

Это не зависит от версии gradle, версии java (и openjdk, и oracle 8 и 9 имеют ошибку) и версии shadowjar. Это приводит меня к выводу, что это связано с Ubuntu, а не с gradle/openjdk/oracle.

Я пытался обновить сертификаты CA, оба sudo update-ca-certificates -f а также sudo apt install ca-certificates-java --reinstall, ни один из которых не решает проблему. Я даже вернулся к проверенной и проверенной методике, не включая и не выключая ее снова.

В чем проблема и как мне это исправить?

5 ответов

Решение

Я переустановил все заново, и эта проблема исчезла. Все, что я сделал по-другому, это установил openjdk-8-jdk до установки openjdk-9-jdk,

Оно работает. Есть ли какие-то странные проблемы с зависимостями?

Я переустановил все, используя apt-get, и это не решило проблему.

Решение, которое я нашел работать: зайдите в Oracle и загрузите версию tar.gz jdk-8. Затем скопируйте файл cacerts из этого в /etc/ssl/certs/java/cacerts

Я также столкнулся с этой проблемой, пытаясь настроить инструмент сборки scala (sbt) на моей новой установке 17.10.

Мое решение было очистить:

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

(Просто очистки и переустановки JDK было недостаточно, у меня все еще был java Команда после этого. Только продув java-common это также ушло, и затем переустановка работала. Я предполагаю, что это относится к ca-certificates-java* пакет, который очищается java-common.)

После этого я переустановил Java снова (я выбрал только openjdk-9):

sudo apt install openjdk-9-jdk

Это вызвало: Running hooks in /etc/ca-certificates/update.d... и добавил много файлов сертификатов. Теперь мой sbt построен успешно:

$ 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
...  

Я скопировал файл /etc/ssl/certs/java/cacerts из резервной копии более старой установки. Если у вас есть что-то подобное, это, вероятно, самый простой вариант. Просто сделайте резервную копию исходного файла cacerts на случай, если у вас возникнут проблемы с другими приложениями.

Oracle изменил формат файла cacerts (с JKS на PCKS12), по умолчанию включенный JDK в Ubuntu уже использует PCKS12, но вы, вероятно, используете более старый JDK, который не может его прочитать. Я преобразовал свой файл хранилища ключей в JKS, используя keytool. Вот почему обходной путь для копирования старого работает для других людей, и почему ваш принятый ответ также работает.

Другие вопросы по тегам