17.10 openjdk和oracle jdk 8和9 trustAnchors参数必须为非空


21

我刚刚在新VM中安装了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版本。
0atman

Answers:


22

我使用apt-get重新安装了所有内容,但并没有解决问题。

我发现有效的解决方案:转到Oracle并下载jdk-8的tar.gz版本。然后将cacerts文件从该文件复制到/ etc / ssl / certs / java / cacerts


2
奇怪的发出这个。感谢您分享您的工作解决方案。我最终从安装了OpenJDK 8的Ubuntu 16.04复制了cacerts文件,以使其正常工作。奇怪的是,cacerts在Ubuntu 17.10上与OpenJDK 9一起安装的安装似乎并不是空的(它比旧的安装的大),而是行不通的。
JeroenHoek '18年

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。您可以cacertsjdk-10.0.1/lib/security/cacerts
iGEL中

即使从Windows JDK安装进行复制,清理和重新安装均
无效

12

尝试在全新的17.10安装上设置scala构建工具(sbt)时,我也遇到了此问题。

我的解决方案是清除:

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

谢谢您-为我解决了问题。我有一个cacerts文件,根据密钥工具,该文件是空的,并且按照您的建议进行清除和重新安装(在我的情况下为jdk8)对其进行了修复。
布莱恩·史密斯

这适用于Linux Mint 19(已安装openjdk-11),并且我想使用openjdk-8
James

4

我再次从头开始重新安装了所有内容,此问题已消失。我所做的所有不同工作是在安装openjdk-8-jdk之前进行安装openjdk-9-jdk

有用。是否有任何奇怪的依赖问题?


它也对我有用,但是我必须重新启动系统。基本上,我先执行openjdk-9-jdk,然后执行8的操作。我同时卸载了这两者,然后将其重新设置为8-then-9。我也一直保持运行状态sudo update-ca-certificates -f。那天不是早上,今天我开始下载Oracle JDK。在完成之前,我发现openjdk可以正常工作并且gradle成功地进行了拉取。
foxx1337

2
我还必须清洗java-common。我认为问题是安装错误ca-certificates-java;使用Java Commons也将其删除,并且在重新插入后会创建一堆pem文件。无需安装openjdk-8。
k0pernikus

1

我从较旧安装的备份中复制了/ etc / ssl / certs / java / cacerts文件。如果您有类似的东西,那可能是最简单的选择。只要确保备份原始的cacerts文件,以防其他应用程序出现问题。


1

Oracle更改了cacerts文件的格式(从JKS更改为PCKS12),Ubuntu中默认包含的JDK已经使用PCKS12,但是您可能正在使用无法读取它的较旧JDK。我使用keytool将密钥库文件转换为JKS。这就是为什么复制较旧版本的解决方法对其他人有效的原因,以及您接受的答案也有效的原因。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.