升级Jsoup至1.15.3后,解决Overzealous依赖Whitelist的构建报错问题
解决Jsoup 1.15.3与Overzealous Remark 1.1.0的Whitelist兼容问题
问题核心
Jsoup从1.15.1版本开始彻底移除了org.jsoup.safety.Whitelist类(官方已将其重命名为Safelist并移除兼容垫片),但Overzealous Remark的最新稳定版1.1.0仍在代码中硬编码使用Whitelist,导致项目构建运行时抛出如下错误:
java.lang.NoClassDefFoundError: org/jsoup/safety/Whitelist
可行解决方案
1. 临时回退Jsoup版本
最快的解决方式是将Jsoup版本回退到1.15.0,这个版本还保留了Whitelist的兼容垫片,能与Remark 1.1.0正常配合。修改Maven依赖:
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.0</version> </dependency>
2. 定制修改Remark源码
如果必须使用Jsoup 1.15.3,可以手动修改Remark的源码以适配新版Jsoup:
- 下载Remark 1.1.0的源代码
- 全局替换所有
org.jsoup.safety.Whitelist为org.jsoup.safety.Safelist - 调整对应API调用:比如
Whitelist.basicWithImages()替换为Safelist.basicWithImages(),whitelist.preserveRelativeLinks(true)方法名不变,直接保留 - 将修改后的代码重新打包为Jar包,替换项目中原有的Overzealous Remark依赖
3. 替换为兼容的Markdown转换库
若不想维护自定义版本,可以考虑更换为支持Jsoup 1.15+的Markdown转HTML库,比如CommonMark Java等,避免依赖未更新的旧库。
内容的提问来源于stack exchange,提问作者Benjaming Jin
相关产品推荐
相关产品推荐

