Java无法找到cacerts:OpenJDK8环境配置遇信任锚异常求助
我之前在Ubuntu搭Android开发环境时也踩过这个一模一样的坑,这个错误本质是Java找不到有效的证书信任库——你已经尝试了证书更新,但可能没触碰到核心问题,试试下面这几个步骤:
第一步:先确认证书文件的实际状态
先检查/etc/ssl/certs/java/cacerts这个文件是不是真的有有效内容:ls -l /etc/ssl/certs/java/cacerts如果输出里文件大小是0或者只有几百字节,说明证书库根本没生成好;另外还要看权限列,确保当前用户有读权限(权限位里带
r)。第二步:重装ca-certificates-java包
在Debian/Ubuntu系系统中,Java的cacerts是由ca-certificates-java这个包负责生成和维护的,单纯运行update-ca-certificates可能不会重建证书库,试试重装这个包:sudo apt-get install --reinstall ca-certificates-java安装完成后再强制更新一次证书:
sudo update-ca-certificates -f这一步基本能生成完整的cacerts文件,我当时就是靠这个解决的问题。
第三步:运行sdkmanager时手动指定证书库
如果上面的操作还是不行,可以在调用sdkmanager的时候,直接通过JVM参数强制指定信任库路径和密码(Java默认信任库密码是changeit):sdkmanager --update -Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit这样能绕开Java默认路径的配置问题,直接使用正确的证书文件。
第四步:检查Java安全配置文件
偶尔会碰到Java的配置文件被篡改的情况,打开java.security文件排查:sudo nano /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security找到
javax.net.ssl.trustStore这一行,确保它的值是/etc/ssl/certs/java/cacerts,或者直接注释掉这一行(让Java使用默认路径),保存后再尝试运行sdkmanager。
内容的提问来源于stack exchange,提问作者Ava

