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

Gradle导入Jackson依赖运行时报NoClassDefFoundError问题求助

问题排查与解决步骤

1. 清理IDE缓存与无效索引

删除依赖后仍能导入空包是IDE缓存残留导致的,先执行以下操作清理:

  • 关闭当前项目,删除项目根目录下的.idea文件夹、.gradle文件夹、build文件夹
  • 重启IDE后重新导入Gradle项目,此时若已删除Jackson依赖,对应导入语句会直接报红,说明缓存清理完成

2. 修正Jackson依赖配置

java.lang.NoClassDefFoundError异常通常是依赖作用域错误或版本不匹配导致的,按以下规则修改build.gradle:

ext {
    // 建议升级到稳定新版本,2.0.1版本过于老旧存在大量已知兼容性问题
    jacksonVersion = '2.15.2'
}

dependencies {
    // 必须使用implementation而非compileOnly声明,compileOnly仅编译期生效,运行时不会加载
    implementation "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
    implementation "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}"
    implementation "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
}
  • 三个Jackson核心包版本必须完全一致,版本交叉会直接导致类加载异常
  • 禁止使用compileOnly/provided作用域声明Jackson依赖,否则运行时不会加载对应类

3. 验证依赖有效性

执行以下操作确认依赖配置生效:

  • 执行命令查看运行时依赖树:./gradlew dependencies --configuration runtimeClasspath,检查三个Jackson包都存在且版本一致,无被其他依赖强制降级的情况
  • 执行./gradlew clean build重新构建项目,确认构建过程无依赖相关报错

4. 打包场景补充

如果你需要将项目打包为独立可执行Jar运行,需要配置shadowJar插件或Spring Boot打包插件将Jackson依赖打入最终Jar包中,否则单独运行Jar时仍会出现类找不到的问题。

5. 运行验证

重新运行主类代码,此时String jsonStr = new ObjectMapper().writeValueAsString(adv);语句可正常执行,不会再抛出JsonView类找不到的异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:04