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

时间:2016-09-30 09:35:29

标签: java maven ssl keystore

不得不再问一次。有人认为它是duplicate question,已经回答并将其从列表中删除。

我正在使用带有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:/Programme/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-Statement,但这与前面描述的命令无关。 任何提示都表示赞赏

7 个答案:

答案 0 :(得分:11)

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

cacerts 文件的

/ etc / ssl / certs / java
1)如果您在此处没有此文件,则说明您收到此错误的原因
2)如果你在这里有这个文件,这意味着这可能不是一个有效的cacerts文件。

如果您需要,可以使用以下方式进行更新:
sudo apt-get install --reinstall ca-certificates
如果它现在有效,那么完美(在我的情况下它不起作用)

所以要解决这个问题:

  1. 直接从oracle下载open-jdk8(在我的例子中)
  2. 提取tar.gz文件
  3. jre / lib / security
  4. 下找到新的有效 cacerts 文件
  5. 将此文件复制到 / etc / ssl / certs / java (如果是这种情况,请删除旧文件)
  6. 最后运行导致你出现此错误的命令,希望它消失了! 希望这有帮助。

    干杯

答案 1 :(得分:8)

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

答案 2 :(得分:3)

今天我找到了原因:

回到过去,我曾经设置过WINDOWS环境变量MAVEN_OPTS     " setx MAVEN_OPTS" -Djavax.net.ssl.trustStore ...."。

此处指定的路径不再存在。

似乎这个设置甚至取代了我的问题中显示的请求。我认为这种行为至少是意料之外的,但无论如何。当我修复环境变量(指向新路径;但我还是要删除它)时,mvn-requests工作正常。

答案 3 :(得分:2)

环境中的无效参数未被命令行上的trustStore设置推翻,这可能是由于命令行中存在拼写错误这一事实。它说:

-Djava.net.ssl.trustStore=...

但这应该是:

-Djavax.net.ssl.trustStore=...

答案 4 :(得分:0)

解决此问题的另一种ez方法: 1.go下载由Amazon发布的Corretto OpenJDK 2.根据其指南进行安装。 3.设置为使用此Java DK。

我的Ubuntu 18中已解决的问题。

答案 5 :(得分:0)

我在Windows上遇到了同样的问题。我安装了两个Java。 Oracle Java,OpenJDK和Maven正在使用OpenJDK进行编译,并且正在解决此问题。

由于我想继续使用OpenJDK编译源代码以解决此问题,因此我在Maven命令中指定了Oracle JRE cacerts库的信任库路径,如下所示。

mvn clean install -DskipTests -Djavax.net.ssl.trustStore=/path-to-oracle-java/jre/lib/security/cacerts

答案 6 :(得分:0)

对于那些在 Windows 上遇到这个问题的人,我在 Windows10 上使用 maven 编译构建时遇到了同样的错误,经过大量搜索我意识到java > jdk-xxx 目录丢失了lib/security/cacerts

将 cacerts 文件从现有的 jre > lib/security 目录(如果不存在则下载)复制到 jdk > lib/security 目录后,错误消失了 >

相关问题