You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ构建Gradle项目报错:Cannot invoke "java.security.KeyStore.size()"因为this.myKeyStore为空

解决Gradle构建时的KeyStore空指针错误

针对你遇到的"Cannot invoke "java.security.KeyStore.size()" because "this.myKeyStore" is null"错误,结合Gradle 6.8.1和Java 9.0.4的环境,试试下面这些方案:

  • 确认Java信任库路径正确性
    确保JAVA_HOME环境变量指向的是正确的Java 9.0.4安装目录,避免系统中其他JDK版本的信任库干扰。可以在终端运行echo $JAVA_HOME(Linux/macOS)或echo %JAVA_HOME%(Windows)验证路径。
    手动指定信任库路径,在Gradle构建时添加启动参数:

    ./gradlew build -Djavax.net.ssl.trustStore=$JAVA_HOME/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit
    
  • 修复或替换损坏的cacerts文件
    先检查Java 9自带的cacerts是否损坏,运行:

    keytool -list -keystore $JAVA_HOME/lib/security/cacerts
    

    输入默认密码changeit,如果命令报错,说明文件损坏。可以从同版本的Java 9安装包中提取正常的cacerts文件替换,或者从其他正常运行的Java 9环境复制。
    也可以重新生成PKCS12格式的信任库:

    keytool -importkeystore -srckeystore $JAVA_HOME/lib/security/cacerts -destkeystore ~/new_cacerts -deststoretype pkcs12
    

    之后在Gradle参数中指定这个新文件:-Djavax.net.ssl.trustStore=~/new_cacerts

  • 配置Gradle全局或项目级SSL参数
    在项目根目录的gradle.properties中添加以下配置,持久化指定信任库:

    systemProp.javax.net.ssl.trustStore=/path/to/your/java9/lib/security/cacerts
    systemProp.javax.net.ssl.trustStorePassword=changeit
    

    或者在build.gradle中为所有Java执行任务配置:

    tasks.withType(JavaExec) {
        systemProperty 'javax.net.ssl.trustStore', System.getProperty('java.home') + '/lib/security/cacerts'
        systemProperty 'javax.net.ssl.trustStorePassword', 'changeit'
    }
    
  • 清理Gradle缓存并刷新依赖
    运行以下命令清理Gradle本地缓存,强制重新拉取依赖,避免缓存中损坏的SSL相关数据:

    ./gradlew clean build --refresh-dependencies
    

内容的提问来源于stack exchange,提问作者Sushant Khursale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:05:09