Maven构建因密钥库访问失败求助,未修改默认密码
Maven构建失败:无法访问cacerts文件的解决办法
问题场景
执行mvn clean build时构建失败,排查发现Maven无法访问cacerts文件,且未修改过该文件的默认密码,报错信息如下:
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.maven.plugins:maven-jar-plugin:pom:3.4.1 from/to central (https://repo.maven.apache.org/maven2): java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) Caused by: java.security.KeyStoreException: problem accessing trust store Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect Caused by: java.security.UnrecoverableKeyException: Password verification failed
可行解决办法
- 确认
JAVA_HOME指向正确:Maven使用JDK/JRE自带的cacerts文件,路径为$JAVA_HOME/jre/lib/security/cacerts(Windows对应%JAVA_HOME%\jre\lib\security\cacerts)。检查环境变量JAVA_HOME是否指向正确的JDK/JRE目录,修正后重新执行构建。 - 验证默认密码有效性:cacerts默认密码为
changeit,执行命令keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts(Windows替换环境变量格式),输入密码后若能正常列出证书,说明密码无问题;若报错则文件大概率已损坏。 - 替换损坏的cacerts文件:从同版本的干净JDK/JRE安装包中复制一份cacerts文件,替换当前路径下的损坏文件,确保替换后文件权限正常。
- 检查Maven配置是否冲突:打开用户目录下的
.m2/settings.xml或Maven安装目录的conf/settings.xml,查看是否存在自定义信任库(sslSettings)或代理相关的信任配置,若有则注释或删除这些配置,避免覆盖默认信任库。 - 修复文件读取权限:Linux/macOS下执行
chmod 644 $JAVA_HOME/jre/lib/security/cacerts赋予文件可读权限;Windows右键cacerts文件,在「属性-安全」中给当前用户添加读取权限。
内容的提问来源于stack exchange,提问作者Lex Man
相关产品推荐
相关产品推荐

