使用Ktor开发Kotlin服务端启动报JsonDeserializer类找不到错误
问题根因
该java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonDeserializer错误是运行时类路径缺失Jackson Databind依赖导致:Auth0官方的JWT库内部依赖Jackson完成JSON序列化/反序列化逻辑,你当前项目没有引入对应的传递依赖,或存在依赖版本冲突。
排查解决步骤
- 第一步:补全缺失的Jackson依赖,配置示例如下:
Gradle Kotlin DSL 配置:
Maven 配置:// 引入Auth0 JWT依赖 implementation("com.auth0:java-jwt:4.4.0") // 补全Jackson Databind依赖,版本可与Ktor内置Jackson版本保持一致避免冲突 implementation("com.fasterxml.jackson.core:jackson-databind:2.15.2")<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> - 第二步:排查依赖版本冲突。如果项目中已经引入了其他版本的Jackson,可执行
./gradlew dependencies(Gradle)或mvn dependency:tree(Maven)查看Jackson依赖的版本树,统一所有Jackson相关依赖的版本即可。 - 第三步:如果Ktor项目已启用Jackson序列化插件,可直接复用Ktor内置的Jackson版本,不需要额外指定版本,进一步避免版本冲突:
implementation("io.ktor:ktor-serialization-jackson:$ktor_version") - 第四步:如果是打包为FatJar后运行时报错,检查打包插件的配置,确保所有runtime范围的依赖都被打入最终产物,Gradle ShadowJar、Maven Shade插件都需要配置正确的合并规则,避免自动忽略三方依赖。
- 第五步:修改完依赖配置后执行clean操作清理旧构建缓存,再重新构建运行项目。
内容的提问来源于stack exchange,提问作者Law.Dev9
相关产品推荐
相关产品推荐

