Maven Error: (重复) java.security.InvalidAlgorithmParameterException: trustAnchors 参数必须为非空

2022-09-02 23:20:17

不得不再问一次。有人认为这是一个重复的问题,已经回答并将其从列表中删除。

我正在使用带有Windows的maven(mvn)批处理命令(而不是带有eclipse的m2e)来运行全新安装或解析依赖项。有时,当pom.xml被更改时,有必要从我们的nexus服务器下载工件。这对我来说曾经工作了很长时间。

但是现在与nexus服务器(https,服务器使用公司拥有的证书)的连接失败,并带有“java.security.InvalidAlgorithmParameterException:trustAnchors参数必须是非空的”我知道,我更改了Java版本。但是我很确定我维护了 cacerts 密钥库,就像我在以前的版本中所做的那样。(在租赁时,我比较了两个cacerts中的指纹;它们是相同的)。

当运行命令“mvn -s -Djavax.net.debug=all -Djava.net.ssl.trustStore=”C:/Program/Java/jre1.8.0_102/lib/security/cacerts“ -Djavax.net.ssl.trustStorePassword=changeit dependency:resolve”时,ssl-trace说:

keyStore is :    
keyStore type is : jks
keyStore provider is : 
init keystore
init keymanager of type SunX509
trustStore is: No File Available, using empty keystore.
trustStore type is : jks
trustStore provider is : 
init truststore

即使在命令中指定密钥库的路径和密码,ssl 跟踪中的答案也是找不到它。

我不知道我可能会改变什么来惹上这个麻烦。我更改了Windows PATH语句,但对于前面描述的命令,这应该无关紧要。任何提示都是值得赞赏的


答案 1

我遇到了同样的问题,我花了一天时间才解决它。这是一个与java相关的问题,您可能会在错误堆栈中看到。登记:

/etc/ssl/certs/java for the cacerts file.
1)如果你在这里没有这个文件,这就是你得到这个错误
的原因2)如果你在这里有这个文件,这意味着这可能不是一个有效的cacerts文件。

如果你愿意,你可以用更新它:
sudo apt-get install --重新安装ca-certificates
如果它现在工作,那么完美(在我的情况下它不起作用)

所以要解决这个问题:

  1. 直接从 oracle 从 open-jdk8(在我的情况下)下载
  2. 提取 tar.gz 文件
  3. jre/lib/security 下查找新的有效 cacerts 文件
  4. 将此文件复制到 /etc/ssl/certs/java(如果是这种情况,请删除旧文件)

最后运行导致您此错误的comand,希望它消失了!希望这有帮助。

干杯


答案 2

我手动管理我的jdk,并在openjdk-8上收到此错误。我用openjdk-11之一替换了cacerts,它工作得很好。如果您尝试此操作,请确保先备份您的 cacert。