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

Grails 2.x如何覆盖自带的Bouncy Castle依赖至最新版本?

在Grails 2.x中替换自带的Bouncy Castle组件

Grails 2.x允许替换自带的Bouncy Castle版本,但仅在build.gradle中声明新版本依赖是不够的——因为Grails lib目录下的旧版本Jar包会被优先加载,导致配置不生效。以下是可行的解决步骤:

1. 排除Grails自带的Bouncy Castle依赖

在dependencies块中添加排除规则,移除Grails核心模块自带的bc库,再声明新版本依赖:

dependencies {
    // 排除Grails核心模块中的Bouncy Castle依赖
    compile("org.grails:grails-core:$grailsVersion") {
        exclude group: 'org.bouncycastle'
    }
    // 若其他Grails子模块(如grails-web)也引入了bc库,需一并排除
    compile("org.grails:grails-web:$grailsVersion") {
        exclude group: 'org.bouncycastle'
    }

    // 添加指定版本的Bouncy Castle依赖
    runtime 'org.bouncycastle:bcprov-jdk18on:1.80'
    runtime 'org.bouncycastle:bcpkix-jdk18on:1.80'
}

2. 手动清理旧版本Jar包

找到Grails安装目录的lib文件夹,或项目自身的lib目录,删除所有以bcprov、bcpkix开头的旧版本Jar文件,彻底移除旧库的加载路径。

3. 验证版本替换是否成功

在项目代码中添加一段验证代码,运行后查看控制台输出,确认当前使用的是目标版本:

// 可放在BootStrap.groovy的init方法中
println "当前Bouncy Castle版本: ${org.bouncycastle.jce.provider.BouncyCastleProvider.VERSION}"

注意事项

  • 替换版本后务必全面测试项目中所有加密、签名相关的功能,确保新版本API与现有代码兼容(部分旧API可能在新版本中被废弃或修改)。
  • bcprov-jdk18on:1.80要求运行环境为JDK 1.8及以上,需确认项目的JDK版本符合要求。

内容的提问来源于stack exchange,提问作者Janardhan Bonu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:59:56