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

使用JJWT生成JWT报错无法加载DefaultJwtBuilder类问题咨询

JJWT类加载错误问题排查

错误信息

无法从线程上下文类加载器、当前类加载器或系统/应用类加载器中加载名为[io.jsonwebtoken.impl.DefaultJwtBuilder]的类。所有类加载探测逻辑均已执行完毕,仍无法找到该类。请确认是否已将jjwt-impl.jar加入运行时类路径?

当前配置

现有Gradle依赖配置如下:

api 'io.jsonwebtoken:jjwt-api:0.11.2'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
runtimeOnly('io.jsonwebtoken:jjwt-orgjson:0.11.2') {
    exclude group: 'org.json', module: 'json' 
}

问题根因

配置错误出在依赖范围选择上:

  • runtimeOnly 配置的依赖仅在当前模块的运行时阶段生效,不会被编译阶段识别,也不会作为传递依赖暴露给依赖当前模块的其他项目。
  • 如果当前项目是被其他服务/模块引用的公共组件,下游依赖拉取当前模块jar时,不会引入jjwt-impl和jjwt-orgjson两个依赖,运行时自然找不到对应的实现类。
  • 就算是独立运行的单体应用,部分Gradle插件、旧版本Spring Boot打包插件也存在漏打runtimeOnly范围依赖的情况,导致运行时类缺失。

修复方案

根据项目类型调整依赖范围即可:

  • 独立运行的单体应用(比如单独部署的Spring Boot服务,不需要被其他项目依赖)
    将runtimeOnly替换为implementation,配置如下:
api 'io.jsonwebtoken:jjwt-api:0.11.2'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.2'
implementation('io.jsonwebtoken:jjwt-orgjson:0.11.2') {
    exclude group: 'org.json', module: 'json' 
}
  • 公共工具库/被其他模块依赖的基础组件
    将JJWT相关实现依赖的范围改为api,保证依赖可以正常传递给下游项目:
api 'io.jsonwebtoken:jjwt-api:0.11.2'
api 'io.jsonwebtoken:jjwt-impl:0.11.2'
api('io.jsonwebtoken:jjwt-orgjson:0.11.2') {
    exclude group: 'org.json', module: 'json' 
}

配置修改完成后执行以下命令刷新依赖、清理构建缓存,再重新启动/构建项目即可:

./gradlew clean build --refresh-dependencies

如果调整后仍然报错,检查运行类路径下是否存在其他版本的JJWT依赖,多版本共存导致的类冲突也会触发该报错,排除旧版本冲突依赖即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:48:25