不得不再问一次。有人认为它是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,但这与前面描述的命令无关。 任何提示都表示赞赏
答案 0 :(得分:11)
我有同样的问题,我花了一天时间来解决它。 这可能是您在错误堆栈中看到的与java相关的问题。 登记入住:
cacerts 文件的 / etc / ssl / certs / java 。
1)如果您在此处没有此文件,则说明您收到此错误的原因
2)如果你在这里有这个文件,这意味着这可能不是一个有效的cacerts文件。
如果您需要,可以使用以下方式进行更新:
sudo apt-get install --reinstall ca-certificates
如果它现在有效,那么完美(在我的情况下它不起作用)
所以要解决这个问题:
最后运行导致你出现此错误的命令,希望它消失了! 希望这有帮助。
干杯
答案 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 目录后,错误消失了 >