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

21

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

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

amb85
источник
Возникла такая же проблема, и удаление / переустановка с помощью openjdk-8-jdkне работает для меня. Есть идеи, как у вас получилось? Я запустил его autoremoveперед установкой openjdk-8-jdkи затем openjdk-9-jdk, но это единственное, что могло бы отличаться от того, что вы сказали.
Энди
одно и тоже. Я перепробовал все перестановки версий 8: jre, jdk и oracle.
0atman

Ответы:

22

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

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

Тайлер Рупперт
источник
2
Странный вопрос это. Спасибо, что поделились своим рабочим решением. В итоге я скопировал файл cacerts из своей Ubuntu 16.04 с установкой OpenJDK 8, чтобы заставить это работать. Как ни странно, cacertsустановленный с OpenJDK 9 на Ubuntu 17.10 не кажется пустым (он больше, чем старый), он просто не работает.
JeroenHoek
3
Вместо того, чтобы копировать и вставлять старые сертификаты, вы также можете удалить java-commons и jdk, а затем переустановить jdk. Таким образом, сертификаты будут правильно восстановлены.
k0pernikus
1
Это единственное решение, которое работало для меня в Ubuntu 18.04 / OpenJDK 11
zergussino
1
Переустановка также не работала для меня в Ubuntu 18.04 / OpenJDK 11, поэтому я загрузил ее jdk-10.0.1_linux-x64_bin.tar.gz. Вы найдете cacertsвjdk-10.0.1/lib/security/cacerts
iGEL
Это работает, даже если копирование из установки Windows JDK, очистка и переустановка не работали (с openjdk 8, 9 или 10), я нахожусь на WSL
FrankMonza
12

Я также столкнулся с этой проблемой, пытаясь настроить инструмент сборки 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
...  
k0pernikus
источник
Спасибо за это - решил проблему для меня. У меня был файл cacerts, который был пуст в соответствии с keytool, и очистка и переустановка, как вы предложили (jdk8 в моем случае), исправили его.
Брайан Смит
Это работало для меня с Linux Mint 19 (на котором был установлен openjdk-11), и я хотел использовать openjdk-8
Джеймс
4

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

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

amb85
источник
Это также сработало для меня, но мне пришлось перезагрузить систему. В основном я выполнил инсталиал openjdk-9-jdk, затем 8. Я удалил оба и переделал его 8 - затем - 9. Я также всегда продолжал работать sudo update-ca-certificates -f. Было не утро, и сегодня я начал скачивать Oracle JDK. До того, как он закончился, я обнаружил, что openjdk работает и успешно работает.
foxx1337
2
Я также должен был очистить java-common. Я предполагаю, что проблема была неправильно установлена ca-certificates-java; он также удаляется с помощью java commons, и при повторной установке создает кучу файлов pem. Установка openjdk-8 не требуется.
k0pernikus
1

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

smakks
источник
1

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

Николя Момартс
источник