You need to enable JavaScript to run this app. 如何解决Maven项目Jackson运行报NoClassDefFoundError: JsonView错误
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Maven项目Jackson运行报NoClassDefFoundError: JsonView错误

报错核心定位

该异常的本质是运行阶段类加载器无法定位com.fasterxml.jackson.annotation.JsonView类,即便你在pom.xml中显式声明了同版本的三个Jackson核心依赖,也会因以下场景触发问题:

常见排查与修复方向

  • 依赖仲裁导致的jackson-annotations实际缺失
    你引入的json-path 2.4.0依赖本身会传递引入对应版本的Jackson相关包,Maven的依赖仲裁机制可能会直接跳过你显式声明的2.12.0版本jackson-annotations,或是在传递依赖过程中把该包给排除了。
    你可以在项目根目录执行Maven命令查看真实依赖关系:
    mvn dependency:tree -Dincludes=com.fasterxml.jackson.core
    确认最终生效的jackson-annotations版本、是否被其他依赖间接排除。
  • 运行时类路径配置错误
    若使用IDE本地启动,检查运行配置的类加载规则:是否误将jackson-annotations的依赖作用范围从默认的compile修改为provided/test,导致运行时环境无法加载该包。
    若使用可执行Jar包启动,直接打开最终生成的Jar文件,检查内部lib目录下是否存在jackson-annotations-2.12.0.jar:很多时候打包流程会漏打该依赖,哪怕pom配置正确,运行时依然会抛类找不到。
  • 本地Maven仓库缓存损坏
    本地仓库中对应版本的jackson-annotations jar包可能因之前下载中断出现文件损坏、class残缺的问题,哪怕pom配置完全正确,类加载器也无法从中解析出JsonView类。可手动删除本地仓库路径下com/fasterxml/jackson/core/jackson-annotations/2.12.0对应的目录,重新拉取依赖后再验证。

快速定位方法

在main方法最开头添加一行测试代码,直接打印当前类加载器实际加载JsonView类的来源位置:

System.out.println(JsonView.class.getProtectionDomain().getCodeSource().getLocation());

如果运行后输出null,即可确认当前运行环境完全没有加载到对应的jackson-annotations依赖。

内容的提问来源于stack exchange,提问作者Thilini Udarika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 04:24:04