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

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 -fsudo apt install ca-certificates-java --reinstall但都无法解决问题。我甚至恢复了久经考验的关闭并重新打开技术,但没有任何影响。

这是什么问题?如何解决?

答案1

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

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

答案2

当我尝试在全新安装的 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
...  

答案3

我又重新安装了所有东西,这个问题就消失了。我唯一不同的就是openjdk-8-jdk在安装之前安装openjdk-9-jdk

可以了。有什么奇怪的依赖问题吗?

答案4

Oracle 更改了 cacerts 文件的格式(从 JKS 更改为 PKCS12)。

Ubuntu 中默认包含的 JDK 已经使用 PKCS12 算法;但是,您可能正在使用无法读取该算法的旧 JDK。

我使用 keytool 将密钥库文件转换为 JKS。这就是为什么复制旧版本的解决方法对其他人有效,以及为什么您接受的答案也有效。

相关内容