如何从ehcache-2.10.6.jar中移除存在漏洞的com.jackson.databind包
解决ehcache-2.10.6内嵌jackson-databind漏洞问题(ShadowJar移除内嵌类)
你的问题核心原因很明确:ehcache-2.10.6是把jackson-databind的类直接内嵌打包进自身jar的,不是通过依赖传递引入的,所以你之前用dependencies.exclude根本碰不到这些内嵌类,自然无效。
下面是可行的ShadowJar配置方案:
1. 核心ShadowJar配置(移除内嵌jackson类)
直接在shadowJar任务中过滤掉ehcache jar里的jackson相关类,无需依赖排除:
shadowJar { zip64 true // 直接删除jar中所有jackson相关的类文件 exclude 'com/fasterxml/jackson/**' // 可选:如果你的项目本身也用jackson,可重定位避免冲突(按需选择) relocate 'com.fasterxml.jackson', 'shadow.com.fasterxml.jackson' }
2. 补充安全版本的jackson依赖
因为移除了ehcache内嵌的有漏洞的jackson类,必须在项目中单独引入安全版本的jackson-databind,否则运行时会出现类找不到的错误:
dependencies { // 替换为官方发布的安全版本号,比如2.15.x或更高稳定版 implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3' // 保留原ehcache依赖 implementation 'net.sf.ehcache:ehcache:2.10.6' }
3. 验证是否生效
打包后解压生成的shadowJar文件,检查是否不存在com/fasterxml/jackson目录;同时启动项目,确保ehcache功能正常,没有抛出ClassNotFoundException。
内容的提问来源于stack exchange,提问作者Eljah
相关产品推荐
相关产品推荐

