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. Вот почему обходной путь для копирования старого работает для других людей, и почему ваш принятый ответ также работает.