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

У чому проблема і як її виправити?


У openjdk-8-jdkмене виникла ця сама проблема, і видалення / перевстановлення не працювало для мене. Будь-яка ідея, як у вас це працює? Я виконував запуск autoremoveперед установкою, openjdk-8-jdkа потім openjdk-9-jdk, але це єдине, що могло відрізнятися від того, що ви сказали.
Енді

те саме. Я спробував усі перестановки версій 8: jre, jdk та oracle.
0атман

Відповіді:


22

Я перевстановив усе, використовуючи apt-get, і це не вирішило проблему.

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


2
Дивне це питання. Дякуємо, що поділилися своїм робочим рішенням. Я закінчив копіювати файл cacerts з мого Ubuntu 16.04 з установкою OpenJDK 8, щоб змусити це працювати. Як не дивно, cacertsвстановлений OpenJDK 9 на Ubuntu 17.10 не здається порожнім (він більший, ніж старий), він просто не працює.
JeroenHoek

3
Замість копіювання вставлення старих certs ви можете також очистити 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

Це працює, навіть якщо копіювання з установки JDK для Windows, чистка та перевстановлення не працювали (з 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...і додало багато файлів cert. Тепер мій 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
...  

Дякую за це - вирішили проблему для мене. У мене був файл кесерів, який був пустим згідно з keytool, і виправити його та повторно встановити, як ви запропонували (у моєму випадку jdk8).
Брайан Сміт

Це працювало для мене з Linux Mint 19 (на якому було встановлено openjdk-11), і я хотів використати openjdk-8
James

4

Я знову встановив все з нуля і ця проблема зникла. Все, що я робив інакше, було встановити openjdk-8-jdkдо встановлення openjdk-9-jdk.

Це працює. Чи є якісь дивні проблеми залежності?


Це також працювало для мене, але мені довелося перезапустити систему. В основному я виконував вставку 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 із резервної копії попередньої установки. Якщо у вас є щось подібне, це, мабуть, найпростіший варіант. Просто не забудьте створити резервну копію оригінального файлу кесерів, якщо у вас виникли проблеми з іншими програмами.


1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.