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

Jsoup类名变更致Grails Markdown兼容失效,需官方更新及临时方案

Grails Markdown v3.0.0 与 Jsoup v1.15+ 版本冲突的临时解决方案

Grails Markdown仅有的v3.0.0版本发布于2015年,内部依赖Jsoup。Jsoup v1.15.1为使用更具包容性的语言,将Whitelist类重命名为Safelist,原兼容用的shim在该版本被标记废弃并移除。如果为修复Jsoup的CVE漏洞升级到v1.15.3,会因为Grails Markdown仍引用Whitelist类导致代码报错,而Grails团队暂未发布新版本,以下是几个可行的临时解决方案:

  • 自定义类桥接
    在项目中创建一个org.jsoup.safety.Whitelist类,手动实现对Safelist的桥接,让Grails Markdown的调用能无缝转发到新类:

    package org.jsoup.safety;
    
    public class Whitelist {
        private final Safelist safelist;
    
        private Whitelist(Safelist safelist) {
            this.safelist = safelist;
        }
    
        public static Whitelist basic() {
            return new Whitelist(Safelist.basic());
        }
    
        public static Whitelist relaxed() {
            return new Whitelist(Safelist.relaxed());
        }
    
        // 按需实现Grails Markdown用到的其他方法,比如addTags、addAttributes等
        public Whitelist addTags(String... tags) {
            safelist.addTags(tags);
            return this;
        }
    
        // 暴露内部Safelist给Jsoup的其他API使用
        public Safelist toSafelist() {
            return safelist;
        }
    }
    

    确保这个类能被类加载器优先加载,覆盖Jsoup原本已移除的Whitelist类。

  • 修改Grails Markdown字节码
    用ASM、Javassist这类字节码编辑工具,把Grails Markdown jar包中所有引用org.jsoup.safety.Whitelist的地方替换成org.jsoup.safety.Safelist,同时调整对应的方法调用(比如Whitelist.basic()改成Safelist.basic())。修改后的jar包作为本地依赖引入项目,替换官方的Grails Markdown v3.0.0。

  • 依赖排除+自定义打包

    1. 先在项目依赖里排除Grails Markdown自带的旧版Jsoup(以Gradle为例,Maven同理):
      implementation('org.grails.plugins:markdown:3.0.0') {
          exclude group: 'org.jsoup', module: 'jsoup'
      }
      implementation 'org.jsoup:jsoup:1.15.3'
      
    2. 下载Grails Markdown v3.0.0的源码,把所有Whitelist相关代码替换成Safelist,重新编译打包成自定义jar包,引入项目使用。
  • 临时降级Jsoup(不推荐)
    如果你的项目中CVE漏洞的影响范围可控,可以临时降级到Jsoup v1.15.0及以下版本——这些版本还保留了Whitelist的兼容shim,不会触发报错。但这只是权宜之计,漏洞风险依然存在,要尽快跟进官方修复。

内容的提问来源于stack exchange,提问作者Soven K Rout

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:55:18