我刚刚在一台新虚拟机中安装了 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
但都无法解决问题。我甚至恢复了久经考验的关闭并重新打开技术,但没有任何影响。
这是什么问题?如何解决?
答案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。这就是为什么复制旧版本的解决方法对其他人有效,以及为什么您接受的答案也有效。