我试图在Jenkins/Hudson上配置我的电子邮件,但我经常收到错误:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
    non-empty

我已经在网上看到了关于这个错误的大量信息,但我还没有得到任何工作。我在Fedora Linux上使用Sun的JDK(不是OpenJDK)。

以下是我尝试过的一些方法。我试着按照这篇文章的建议,但是从Windows复制cacerts到我的Fedora盒子托管Jenkins不起作用。我尝试按照这个指南,因为我试图配置Gmail作为我的SMTP服务器,但它也没有工作。我还尝试手动下载并移动这些cacert文件,并使用本指南中的命令的变体将它们移动到我的Java文件夹中。

我愿意接受任何建议,因为我现在被困住了。我已经让它在Windows Hudson服务器上工作了,但在Linux上却很吃力。


当前回答

我在Ubuntu 14.04 (Trusty Tahr)上运行一套特定的Android测试时遇到了这个问题。根据shaheen的建议,有两件事对我有用:

sudo update-ca-certificates -f

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

其他回答

我是可移植性的粉丝,所以我不安装java,只是下载tar.gz并导出路径中的一些值,一切都可以工作。

我与这个问题作斗争,没有解决方案(安装或更新操作系统证书)对我有效。

在我的情况下的错误是:空cacerts在我的jdk。

我不知道为什么,但是我的jdk.tar.gz有一个空的cacerts文件

/ . ./some_openjdk/jre/lib/security/cacerts size: 32字节

下载:

https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz https://download.java.net/java/GA/jdk9/9/binaries/openjdk-9_linux-x64_bin.tar.gz

Fix

经过几次尝试,我找到了一个正确的jdk.tar.gz,其中包含一个101 KB大小的cacerts文件

我从https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries下载了这个开放jdk

https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk-jfr_x64_linux_8u262b10.tar.gz

我在这个Dockerfile中找到了这个url:

https://github.com/docker-library/openjdk/blob/b5d14d9165fad693901c285d6e7bbc36d1cde41f/8/jdk/Dockerfile

我在使用Android SDK sdkmanager时遇到了这个问题。对我来说,这个解决方案是有效的:

进入“/usr/lib/jvm/java-8-oracle/jre/lib/security/”目录 将cacert替换为cacert.original

cacert文件很小(22B)。我已经从ppa:webupd8team/java安装了oracle-java8-installer(根据本手册:https://docs.nativescript.org/start/ns-setup-linux)。

在Ubuntu上:

Sudo apt安装ca-certificates-java

or

Sudo apt-get install ca-certificates-java

帮我整理好了。

在我的例子中,这个问题的根本原因是空的信任库(它是应用程序服务器信任库)。 当我添加任何虚拟x.509证书时,停止抛出此错误。

将证书添加到truststore vis keytool中

keytool -import -alias dummy -keystore <path to keystore> -storepass <truststore password if any>

一些OpenJDK供应商发布的版本通过将空cacerts文件与二进制文件一起分发而导致了这种情况。该错误的解释在这里:https://github.com/AdoptOpenJDK/openjdk-build/issues/555

您可以从c:\Program Files\Java\ jdk1.8.0_192\jre\lib\security\cacerts等旧安装中将该文件复制到adoptOpenJdk8\jre\lib\security\cacerts。

AdoptOpenJDK的错误版本是https://github.com/AdoptOpenJDK/openjdk8-releases/releases/download/jdk8u172-b11/OpenJDK8_x64_Win_jdk8u172-b11.zip