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

我刚刚在新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 -fsudo apt install ca-certificates-java --reinstall ,这两种方法都没有解决问题。 我甚至恢复了经过试验和测试的关闭,再次开启技术,没有任何影响。

有什么问题,我该如何解决?

我使用apt-get重新安装了一切,但没有解决问题。

我找到的解决方案:转到Oracle并下载j.gk-8的tar.gz版本。 然后将cacerts文件从中复制到/ etc / ssl / certs / java / cacerts中

我在尝试在新的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 ... 

我已经从头开始重新安装了所有东西,这个问题已经消失了。 我做的不同就是在安装openjdk-8-jdk之前安装openjdk-9-jdk

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

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

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