我试图在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上却很吃力。
我在Linux上的Java 9.0.1上有这个错误消息。这是由于JDK的一个已知错误,其中。tar.gz二进制包中的cacerts文件是空的(从http://jdk.java.net/9/下载)。
参见JDK 9.0.1版本说明的“已知问题”段落,说“TLS在OpenJDK 9上默认不工作”。
在Debian/Ubuntu(可能还有其他衍生版本)上,一个简单的解决方法是用"ca-certificates-java"包中的cacerts文件替换cacerts文件:
sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts
在Red Hat Linux/CentOS上,你可以从“ca-certificates”包中做同样的事情:
sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts
除了....,这对任何人都没有帮助对于任何在树莓派(使用AMD CPU)上从Docker镜像运行Java 8的人来说,我得到了以下Dockerfile,为我成功地构建和运行
FROM hypriot/rpi-java
USER root
WORKDIR /usr/build/
RUN /usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts
RUN update-ca-certificates -f
RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure
EXPOSE 8080
ARG JAR_FILE=target/app-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Djavax.net.ssl.trustStorePassword=changeit", "-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts", "-jar", "app.jar"]
在ubuntu 14.04和openjdk 11 from ppa:openjdk-r/ppa上,这对我来说是有效的:
在java中。安全性将密钥库类型更改为
keystore.type=jks
然后:
sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java
当您检查它是否工作时,请确保您使用的守护进程中没有任何旧的Java仍在运行(例如。——gradle的no-daemon选项)
这个bug很好地描述了所有内容,并将帮助您理解正在发生的事情https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631