升级Jsoup至1.15.3后出现NoClassDefFoundError,寻求解决版本
问题原因及解决方案
出现NoClassDefFoundError: org/jsoup/safety/Whitelist是因为Jsoup从1.14.0版本开始,将Whitelist类重命名为SafeList,1.15.3版本已经彻底移除了旧的Whitelist类,你的代码(或依赖的第三方库)还在引用这个已被移除的类,所以报错。
你有两个可行的解决方向:
回退到兼容旧API的Jsoup版本:选择1.13.1及更低版本,这些版本中
Whitelist类仍然存在,直接修改pom.xml里的依赖版本即可:<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency>这个方案不需要修改代码,适合快速解决问题,但会错过1.14.0及以后版本的安全更新和功能改进。
修改代码适配新版本API:把代码中所有引用
org.jsoup.safety.Whitelist的地方替换为org.jsoup.safety.SafeList,两者的核心API用法完全一致,比如:
原来的代码:Whitelist whitelist = Whitelist.basic();修改后:
SafeList safeList = SafeList.basic();这个方案可以让你继续使用1.15.3及后续的Jsoup版本,获得最新的安全修复。如果项目中有依赖的第三方库仍在使用
Whitelist,则需要等待该库升级适配,或者暂时回退Jsoup版本。
内容的提问来源于stack exchange,提问作者Sekhar T
相关产品推荐
相关产品推荐

