我刚刚在新的 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
解决问题。我什至恢复到久经考验的关闭和重新打开技术,没有任何影响。
有什么问题,我该如何解决?
我使用 apt-get 重新安装了所有内容,但这并没有解决问题。
我发现可行的解决方案:转到 Oracle 并下载 jdk-8 的 tar.gz 版本。然后将 cacerts 文件从中复制到 /etc/ssl/certs/java/cacerts
当我尝试在我全新的 17.10 安装上设置 scala 构建工具 (sbt) 时,我也遇到了这个问题。
我的解决方案是清除:
(仅仅清除并重新安装 jdk 是不够的,
java
在那之后我仍然有一个命令。只有通过清除java-common
它也消失了,然后重新安装才起作用。我认为它与ca-certificates-java*
被清除的包有关java-common
。)之后,我再次重新安装了 java(我只选择了 openjdk-9):
这触发了:
Running hooks in /etc/ca-certificates/update.d...
并添加了很多证书文件。现在我的 sbt 构建成功了:我再次从头开始重新安装了所有东西,这个问题已经消失了。我所做的不同之处是在安装
openjdk-8-jdk
之前安装openjdk-9-jdk
.有用。有什么奇怪的依赖问题吗?
我从旧安装的备份中复制了 /etc/ssl/certs/java/cacerts 文件。如果你有类似的东西,它可能是最简单的选择。只要确保备份原始 cacerts 文件,以防您在其他应用程序中遇到问题。
Oracle 更改了 cacerts 文件的格式(从 JKS 到 PKCS12)。
Ubuntu中默认包含的JDK已经使用了PKCS12算法;但是,您可能正在使用无法读取它的旧 JDK。
我使用 keytool 将我的密钥库文件转换为 JKS。这就是为什么复制较旧的解决方法对其他人有效的原因,以及为什么您接受的答案也有效的原因。