在 ubuntu 15.10 和 openjdk-8-jdk 中是否缺少 cacerts 文件?

2022-09-01 22:35:06

我刚刚安装了Ubuntu 15.10和他们的openjdk-8-jdk(通过apt-get)。

现在我缺少 cacerts 文件。

在通常的位置有一个链接:

ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts
lrwxrwxrwx 1 root root 27 Oct 22 01:47 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -> /etc/ssl/certs/java/cacerts

但是在 /etc/ssl/certs/java/cacerts 上什么都没有:

stat /etc/ssl/certs/java/cacerts
stat: cannot stat ‘/etc/ssl/certs/java/cacerts’: No such file or directory

答案 1

这是由于这里已经报告的一个错误:Ubuntu错误票证

上面的票证链接了另一个类似的问题,它提供了一个解决方法:

$ sudo dpkg --purge --force-depends ca-certificates-java
$ sudo apt-get install ca-certificates-java

答案 2

只是在这里添加一个错误,Gergely答案解决了,如果你试图用ssl调用外部api并得到这个错误:

java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1903)

这解决了

$ sudo dpkg --purge --force-depends ca-certificates-java
$ sudo apt-get install ca-certificates-java