我试图在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上却很吃力。


当前回答

在Red Hat Linux上,我通过将证书导入到/etc/pki/java/cacerts解决了这个问题

其他回答

这个奇怪的消息意味着您指定的trustStore是:

空的, 未找到,或 无法打开 (由于错误/缺少trustStorePassword,或 例如,文件访问权限)。

参见下面@AdamPlumb的回答。

对于我的情况,我没有完全指定VM参数。

(运行配置. .>(在Apache Tomcat下)任何服务器> (x)=参数>虚拟机参数:)

确保所有VM参数设置正确。

Marquis of Lorne的回答是准确的,我添加了一些信息用于调试:

要调试这个问题(我在这里写了更多细节)并了解正在使用(或试图使用)什么信任库,可以添加属性javax.net.debug=all,然后过滤关于信任库的日志。您还可以使用属性javax.net.ssl.trustStore来指定特定的信任库。例如:


    java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=/Another/path/to/cacerts -jar test_get_https-0.0.1-SNAPSHOT-jar-with-dependencies.jar https://www.calca.com.py 2>&1| grep -i truststore

我也犯了同样的错误,问题不在于配置JDK,而在于应用程序中JKS文件的路径错误。trust-store: parameter下的属性文件,仔细检查路径是否正确。

在Red Hat Linux上,我通过将证书导入到/etc/pki/java/cacerts解决了这个问题